php – 在新的stdClass中声明一个匿名函数
发布时间:2020-12-13 14:15:42 所属栏目:PHP教程 来源:网络整理
导读:只是想知道为什么这样的事情不起作用: public function address($name){ if(!isset($this-addresses[$name])){ $address = new stdClass(); $address-city = function($class = '',$style = ''){ return $class; }; $this-addresses[$name] = $address; } r
只是想知道为什么这样的事情不起作用:
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’)应该只是echo Class,但是我得到致命错误:调用undefined方法stdClass :: city() 我可以找到一个更好的方式来做到这一点,因为这会变得凌乱,但是我想知道我可能在做什么错,或者如果PHP不支持这个,为什么.
调用致命错误时,PHP是正确的调用undefined方法stdClass :: city()因为对象$class-> address(‘name’)没有方法城市.
Intead,这个对象有属性城市,是Closure Class( http://www.php.net/manual/en/class.closure.php)的实例 您可以验证这一点:var_dump($class-> address(‘name’) – > city) 我发现调用这个匿名函数的方法是: $closure = $class->address('name')->city; $closure('class'); 希望这可以帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |