오케이, 이것은 오랫동안 제 개인적인 버그였습니다. 수업이 있다고 해.PHP 5.3 변수를 먼저 설정하지 않고 클래스를 동적으로 인스턴스화하기
class One {
public $class = 'Two';
public $member = 'member';
}
class Two {
public $member = 'Hey there';
function __construct() {
print 'Created';
}
}
$one = new One();
// case 1: works
$two_class = $one->class;
$two = new $two_class();
// case 2: fails
$two = new {$one->class}();
이름을 변수에 먼저 할당하지 않고 클래스 구성원으로부터 클래스를 인스턴스화하는 방법이 있습니까? 나는 속성에서 클래스를 동적으로 생성하려고 할 때마다 조금씩 죽습니다. 먼저 변수를 채워야합니다. 누구나 기술적으로 왜 이렇게 작동하지 않는지 설명 할 수 있습니까?
print $two->{$one->method}
행복하게 '안녕하세요?'라고 인쇄 하시겠습니까?
기술적 될 경우 당신이 필요하지 않은 경우 같은 일이 일어날 것()의 새 클래스를 시작합니다. 또한 변수 $ new_one = $ one-> class에 할당 해보십시오. $ two = new $ new_one(); – wesside
나는 항상 이와 같은 일을하도록 당신을 낙담시킬 것입니다. 단순히 주어진 클래스에 그것이 가지고 있다고 생각하는 기능이 있는지 확실하지 않기 때문에 ... 그것은 유지 보수 공포입니다! 함수처럼 GetMeMyClass ($ input) {switch ($ input) {case 'One': return new One();과 같은 문자열의 값을 기반으로 객체를 만드는 함수를 만듭니다. case 'Two': 새로운 Two()를 반환합니다. 기본값 : die ("GetMeMyClass에 잘못된 수업이 있습니다"); }} – bkwint
@wes, 그건 내 질문 이었어. – thepearson