【发布时间】:2023-03-04 02:52:01
【问题描述】:
我目前正在为我在 PHP 中开发的应用程序开发一个基于 Web 的管理前端(在几次尝试让 Lua 与 Apache 和 Nginx 一起工作失败之后,这也有点奇怪),而 PHP 的数组让我感到沮丧。
我正在尝试初始化一个对象数组,就像在任何其他支持 OOP 的语言中一样:
private $leftNavItems = array(
new LeftNavItem("./img/icon/status.png", "status", "App Status", "./articles/app_status.phtml", "app_status")
);
但是,我收到一条错误消息,指出“不允许将表达式作为字段默认值”。
为什么我不能用新对象初始化数组?我是否必须通过使用临时变量和 array_push 来解决这个问题?
编辑:我来自 C#、Java 和 C++ 等 OOP 语言,以及 Lua 等纯过程语言。
【问题讨论】:
-
你的 LeftNavItem 是什么?
-
这是一个包含几个变量、一个构造函数和几个 getter 的类。
-
在类的构造函数
__construct()中移动初始化部分。对象属性只能是initialized on their definition,其值只能在编译期间进行评估。 -
@Schleis 我不同意,我不仅要寻找解决方法,还要问为什么这是一个约束。另外,我正在尝试创建一个新对象数组,而不是初始化类中的值。