如何将函数作为param传递给类,然后将其分配给本地类的var!
这是我的情景,这可以解决吗?
<?php
class a {
protected $var;
function __construct($fun) {
echo $fun('world'); // This is working perfect
$this->var = $fun;
}
function checkit($x) {
return $this->var($x); // This is not working [ Call to undefined method a::var() ]
}
}
$mth = 'mathm';
$cls = new a(&$mth); // result [ hello (world) ]
echo $cls->checkit('universe'); // <- not working as it fail
function mathm($i) {
return 'hello (' . $i . ')';
}
?>
答案 0 :(得分:0)
return $this-var($x);
需要:
return $this->var($x);
答案 1 :(得分:0)
我认为你在这里有些困惑。从您的代码中,您只将变量的地址(包含字符串“mathm”作为其值)传递给class a
的构造函数。引用将保存到实例变量$var
(仍然带有字符串值)。然后在你的checkit()
中,你试图使用值('mathm'),就好像它是一个函数一样。函数mathm()
存在,但不在class a
的范围内。所以class a
对任何名为mathm
的函数的位置一无所知。因此错误。
如果在print_r($this->var);
中插入代码行checkit()
,您将看到输出是一个简单的字符串,而不是函数的函数或引用。
您可以使用闭包a.k.a匿名函数来传递函数。或者,您可以创建一个包含函数mathm
的类,然后传递此类的实例以在类a中使用。
我希望这有帮助!