【发布时间】:2018-08-18 13:10:31
【问题描述】:
我正在使用 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_FUNCTION)
我能够得到我想要的结果:
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();
但这并不理想;我认为这些函数定义不属于构造函数 - 理想情况下,我希望它们是静态类方法。
【问题讨论】: