在php中声明属性时,为什么无法将属性初始化为函数?以下代码片段导致 解析错误:语法错误,意外的T_FUNCTION
<?php class AssignAnonFunction { private $someFunc = function() { echo "Will Not work"; }; } ?>
您还可以将属性初始化为字符串,数字或其他数据类型吗?
编辑:
但是我可以在__construct()方法中将函数分配给属性。以下工作正常:
<?php class AssignAnonFunctionInConstructor { private $someFunc; public function __construct() { $this->someFunc = function() { echo "Does Work"; }; } } ?>
因为它不是用PHP实现的。
http://www.php.net/manual/zh/language.oop5.properties.php。引用:
它们(属性)是使用关键字public,protected或private之一定义的,后跟普通变量声明。该声明可以包括一个初始化,但是此初始化必须是一个常量值- 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。
您不能像这样初始化属性,函数不是常量值。因此,我的原始答案是“未实现”。
为什么不执行?我只能猜测-这可能是一项非常复杂的任务,没有人加紧实施。和/或可能对这样的功能没有足够的需求。