首页  >  文章  >  后端开发  >  为什么不能在声明时将 PHP 类属性初始化为函数?

为什么不能在声明时将 PHP 类属性初始化为函数?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-25 17:26:44603浏览

Why can't you initialize a PHP class property to a function at declaration time?

为什么不能将 PHP 属性初始化为函数?

尝试在声明期间将 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn