尝试在声明期间将 PHP 类属性初始化为函数时,出现“解析错误” : 语法错误,意外的 T_FUNCTION" 错误可能会出现。
<code class="php">class AssignAnonFunction { private $someFunc = function() { echo "Will Not work"; }; }</code>
出现这种情况是因为 PHP 不允许使用非常量值(例如函数)初始化属性。 PHP 手册解释道:
“属性是通过使用关键字 public、protected 或 private 之一来定义的,后跟一个普通的变量声明...这个初始化必须是一个常量值...它必须是能够在编译时求值,并且不得依赖运行时信息来求值。”
因此,函数不能在声明时分配给属性。
但是,可以使用 __construct() 方法使用函数来初始化属性:
<code class="php">class AssignAnonFunctionInConstructor { private $someFunc; public function __construct() { $this->someFunc = function() { echo "Does Work"; }; } }</code>
这是可能的,因为 __construct() 方法是在运行时调用的,允许分配动态值,包括功能。
以上是为什么不能在声明时将 PHP 类属性初始化为函数?的详细内容。更多信息请关注PHP中文网其他相关文章!