저는 익명의 함수를 사용하여 방금 시작했고, 더 큰 프로젝트에서 실제 사용하려고했습니다. 로드 블록을 치고 난 후에, 나는 작은 연습 스크립트를 설치하려고했지만 같은 문제가 계속 발생합니다. 다음과 같은 작업을 수행으로,Strange Object/Class Issue (stdClass)
class Foo {
public $cmd;
public function __construct() {
$this->cmd = new stdClass();
$this->cmd->a = 'b4ng';
}
}
$bar = new Foo();
echo $bar->cmd->a;
그 다음은 을하지 않습니다, 분명하게되고,
$a = function($in) {
echo $in;
};
$a('b4ng');
위의 작품 잘, 나는 확실히 무슨 일이 일어나고 있는지 이해하지 않지만, 여기에 몇 가지 코드는 일, 위의 코드 조각을 사용하려고 할 때
class Foo {
public $cmd;
public function __construct() {
$this->cmd = new stdClass();
$this->cmd->message = function($in) {
echo $in;
};
}
}
$bar = new Foo();
$bar->cmd->message('b4ng');
, 나는 다음과 같은 오류와 충돌하고있어,
Fatal error: Call to undefined method stdClass::message()
오류가 무엇을 말하는지 이해합니다. 이유를 이해하지 못합니다. 'message'는 분명히 stdClass의 네이티브 함수/메소드는 아니지만 'cmd'에 선언되었습니다.
[개체 속성에 직접 할당 된 콜링 호출] 가능한 중복 (http://stackoverflow.com/questions/4535330/calling-closure-assigned-to-object-property-directly) -'$ bar-> cmd- > 메시지 -> __ invoke ('b4ng'); ' – FuzzyTree
@FuzzyTree,이 질문을 게시하기 전에 주위를 둘러 보지 않아서 고맙습니다. 어쨌든 내 문제가 해결됩니다. – user1117742456