为什么无法在 PHP 中使用匿名函数初始化属性?

Susan Sarandon
发布: 2024-10-30 07:34:03
原创
1008 人浏览过

Why Can't I Initialize Properties with Anonymous Functions in PHP?

使用匿名函数初始化属性:为什么以及如何?

如下面的代码片段中所述,在类声明在 PHP 中触发“解析错误:语法错误,意外的 T_FUNCTION”。然而,在构造函数中将函数分配给属性是可能的,如第二个片段所示。

<code class="php">// Property initialization with anonymous function error
class AssignAnonFunction {
    private $someFunc = function() {
        echo "Will Not work";
    };
}

// Property initialization in constructor
class AssignAnonFunctionInConstructor {
    private $someFunc;

    public function __construct() {
        $this->someFunc = function() {
            echo "Does Work";
        };
    }
}</code>
登录后复制

无法直接使用匿名函数初始化属性源于 PHP 的实现。属性必须使用编译期间可评估的常量值进行初始化,而函数不满足此条件。

尽管有此限制,PHP 仍允许在构造函数中将函数分配给属性。这是因为构造函数是在运行时执行的,允许动态分配。

虽然此解决方法提供了灵活性,但缺乏使用匿名函数进行直接属性初始化在某些情况下可能是一个缺点。它需要额外的代码,并且会影响代码的可读性。

尽管 PHP 中这一设计决策的原因仍然有些推测,但可能的解释包括实现此类功能的复杂性以及对其需求不足。

以上是为什么无法在 PHP 中使用匿名函数初始化属性?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!