我使用的是php 5.6,我想这样做:
class FooBar {
public function foo() {
echo "foo!";
array_map($this->bar, [1,2,3]);
}
private function bar() {
echo "bar!";
}
}
(new FooBar)->foo();
这会产生以下错误:
注意:未定义的属性:FooBar::$bar
或者,是否可以将匿名函数声明为类属性?类似这样:
class FooBar {
private $bar = function() {
echo "bar!";
}
public function foo() {
echo "foo!";
array_map($this->bar, [1,2,3]);
}
}
(new FooBar)->foo();
这给了我以下错误:
分析错误:语法错误,意外的“函数”(T\U函数)
我可以通过以下方式获得我想要的结果:
class FooBar {
function __construct() {
$this->bar = function() {
echo "bar!";
};
}
private $bar;
public function foo() {
echo "foo!";
array_map($this->bar, [1,2,3]);
}
}
(new FooBar)->foo();
然而,这并不理想;我认为这些函数定义不属于构造函数——理想情况下,我希望它们是静态类方法。