只是想知道为什么这样的东西不起作用:
public function address($name){
if(!isset($this->addresses[$name])){
$address = new stdClass();
$address->city = function($class = '', $style = ''){
return $class;
};
$this->addresses[$name] = $address;
}
return $this->addresses[$name];
}
称呼它就像echo $class->address('name')->city('Class')
应该只是回声Class
,但是我得到Fatal error: Call to undefined method stdClass::city()
我可以找到一个更好的方法来做到这一点,因为这会变得混乱,但我想知道我可能做错了什么,或者 PHP 是否不支持这个以及为什么。
PHP调用致命错误时是正确的Call to undefined method stdClass::city()
因为对象$class->address('name')
没有方法 city
。
相反,这个对象有财产 city
这是闭包类的实例(http://www.php.net/manual/en/class.closure.php http://www.php.net/manual/en/class.closure.php)
您可以验证这一点:var_dump($class->address('name')->city)
我发现调用这个匿名函数的方法是:
$closure = $class->address('name')->city;
$closure('class');
希望这可以帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)