为什么 PHP 属性不允许使用函数
在 PHP 中,属性默认值不能在类声明中包含函数调用。这个限制引发了对其推理的质疑。
设计视角
PHP 编译器的设计在这个限制中起着至关重要的作用。解析类变量声明时,语法期望静态标量或静态标量数组作为有效值。
虽然修改语法以适应属性内的函数调用可能会消除语法错误,但会在编译过程中引入新问题。编译器通过在类声明期间生成操作码数组来进行操作。非静态值(例如函数调用的结果)会通过更改预期的操作码序列来中断此过程。
结构限制
要纠正此问题,编译器将需要一个新的操作码数组,其范围仅限于类变量声明。然而,确定评估此作用域数组的适当时机提出了另一个挑战:
实现挑战
虽然其他动态语言已经克服了这些障碍,但在 PHP 中这样做将需要进行重大重组。到目前为止,语言设计者认为这是一个低优先级,因为它需要大量的努力,而且没有明显的好处。
结论
函数调用的限制PHP 属性中的默认值是编译器设计以及在现有结构中实现此功能的实际困难的结果。
以上是为什么 PHP 中不允许函数调用作为属性默认值?的详细内容。更多信息请关注PHP中文网其他相关文章!