在PHP中,我喜欢在一个步骤中声明对象(stdClass的新实例)的能力,如下所示:
$obj = (object) ['a','b','c'];
这很好.. 但是一个类属性:
class Foo {
public $obj = (object) ['a','b','c'];
}
我收到以下错误:
语法错误,意外'(对象)'(对象)(T_OBJECT_CAST)
还有另一种方法可以实现这一目标吗?并且,有谁知道为什么不允许上面的代码(也许特定于PHP 5.6)?我无法在任何地方找到具体的文档。
答案 0 :(得分:3)
引用PHP Docs:
它们[对象属性]是使用关键字public,protected或private之一定义的,后跟普通变量声明。此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,而必须不依赖于运行时信息。为了评估。
(我的重点)
和
public $obj = (object) ['a','b','c'];
依赖于run-time
信息,即运行时将数组转换为对象
绕过这个的方法是在构造函数中分配值