我正在开发一个基于Web的管理前端,用于我开发的应用程序,在PHP中(在几次失败的尝试让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来解决这个问题?
编辑:我来自OOP语言,如C#,Java和C ++,以及纯程序语言,如Lua。
答案 0 :(得分:3)
在课程中移动初始化部分'构造函数__construct()
。对象属性只能使用可在编译期间评估的值来initialized on their definition。
class X {
private $leftNavItems = array();
public function __construct()
{
$this->leftNavItems = array(
new LeftNavItem("./img/icon/status.png", "status", "App Status", "./articles/app_status.phtml", "app_status")
);
}
}
在编译期间评估属性的初始值设定项;它们不是在初始化类时要执行的代码片段。
您的代码尝试通过创建对象来初始化变量。创建new
对象是代码执行期间发生的一种活动。