使用匿名函数初始化属性:为什么以及如何?
如下面的代码片段中所述,在类声明在 PHP 中触发“解析错误:语法错误,意外的 T_FUNCTION”。然而,在构造函数中将函数分配给属性是可能的,如第二个片段所示。
// 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";
};
}
}
无法直接使用匿名函数初始化属性源于 PHP 的实现。属性必须使用编译期间可计算的常量值进行初始化,而函数不满足此条件。
尽管有此限制,PHP 仍允许在构造函数中将函数分配给属性。这是因为构造函数是在运行时执行的,允许动态赋值。
虽然此解决方法提供了灵活性,但缺乏使用匿名函数进行直接属性初始化在某些情况下可能是一个缺点。它需要额外的代码,并且会影响代码的可读性。
尽管 PHP 中这一设计决策的原因仍然有些推测,但可能的解释包括实现此类功能的复杂性以及对其需求不足。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3