<?php
class Foo
{
public $bar;
public $var;
public function __construct() {
$this->bar = function() {
return 42;
};
}
public function test(){
$this->var = function() {
return 44;
};
}
}
$obj = new Foo();
echo ($obj->bar)(), "<br/>";
var_dump($obj->test());
?>
输出:42
NULL
我在做错了,我想在44测试函数中得到var值。
提前感谢您的回答。
答案 0 :(得分:2)
使用此方法调用$obj->test()
,您只需将一个函数分配给实例变量$var
。这就是为什么当你var_dump($obj->test());
时,它会显示NULL
,因为该方法不会返回任何内容。
相反,您可以做的是,从$this
方法返回test()
并使用当前实例来调用该匿名函数,如下所示:
class Foo{
public $bar;
public $var;
public function __construct() {
$this->bar = function() {
return 42;
};
}
public function test(){
$this->var = function() {
return 44;
};
return $this;
}
}
$obj = new Foo();
echo ($obj->bar)(), "<br/>";
echo ($obj->test()->var)();
此处the demo。