为什么 PHP 中不允许函数调用作为属性默认值?

DDD
发布: 2024-10-17 20:31:03
原创
420 人浏览过

Why Function Calls Are Not Allowed as Attribute Default Values in PHP?

为什么 PHP 属性不允许使用函数

在 PHP 中,属性默认值不能在类声明中包含函数调用。这个限制引发了对其推理的质疑。

设计视角

PHP 编译器的设计在这个限制中起着至关重要的作用。解析类变量声明时,语法期望静态标量或静态标量数组作为有效值。

虽然修改语法以适应属性内的函数调用可能会消除语法错误,但会在编译过程中引入新问题。编译器通过在类声明期间生成操作码数组来进行操作。非静态值(例如函数调用的结果)会通过更改预期的操作码序列来中断此过程。

结构限制

要纠正此问题,编译器将需要一个新的操作码数组,其范围仅限于类变量声明。然而,确定评估此作用域数组的适当时机提出了另一个挑战:

  • 文件加载: 该函数此时可能不可用。
  • 属性访问:延迟评估,直到属性访问会阻碍对象创建。
  • 对象构造:在构造时进行评估更明智,但仍然会出现循环引用的问题。

实现挑战

虽然其他动态语言已经克服了这些障碍,但在 PHP 中这样做将需要进行重大重组。到目前为止,语言设计者认为这是一个低优先级,因为它需要大量的努力,而且没有明显的好处。

结论

函数调用的限制PHP 属性中的默认值是编译器设计以及在现有结构中实现此功能的实际困难的结果。

以上是为什么 PHP 中不允许函数调用作为属性默认值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板