최근 다음과 같은 문제가 발생했습니다. 이것은 문제가 발생한 간단한 예입니다. 이 코드를 실행하면개체 참조에서 __invoke 동작이 손실되었습니다.
class a{
public function __invoke($classname){
return new $classname($this);
}
}
class b{
private $obj;
public function __construct($obj){
$this->obj = $obj;
}
public function getC(){
return $this->obj('c');
}
}
class c{}
$a = new a;
$a('b')->getC();
, 나는 다음과 같은 오류 __invoke의 동작이 줄
return $this->obj('c');
그것의 사실 여부에 객체 참조 잃은 것 같다
Fatal error: Call to undefined method b::obj()
를 얻을 그 큰 문제는 내가 이렇게 할 수 있기 때문에.
return $this->obj->__invoke('c');
..하지만 __invoke가 예상대로 작동하지 않는 이유를 알고 싶습니다. 아무도 나에게 이것을 설명 할 수 있을까? 미리 감사드립니다!
답변 주셔서 감사합니다. 실제로 작동합니다! – sofl