我正在尝试将函数分配为属性值。我编写了以下代码:
class TestClass{
private $name;
public function __construct($name){
$this->$name=$name;
}
public function changeName($name){
$this->name=$name;
}
public function displayName(){
echo $this->name;
}
}
$testCls= new TestClass('Dmitry Fucintv');
$testCls->changeName=function($name){
$this->name='Other name';
};
$testCls->changeName('Some name');
$testCls->displayName();//Display 'Some name', but I'm expected that 'Other name' will be displayed.
问题:如何调用分配给字段的函数?
将函数分配给属性后,该对象具有method called changeName
and a property called changeName
。然后呢->changeName()
参考?是吗($testCls->changeName)()
or ($testCls->changeName())
?答案是现有方法胜出。您不能通过这种方式覆盖或替换方法。
您可以像这样调用属性函数:
call_user_func($testCls->changeName, 'Some name');
但是,这会引发此错误:
Fatal error: Using $this when not in object context
Because $this
您指定的匿名函数内部未引用$testCls
,它什么也没指,因为没有$this
在定义函数的范围内。
换句话说,这不会完全按照您想要的方式工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)