有没有办法将数组“转换”为(对象)作为类/特征的属性?

时间:2016-05-11 17:58:49

标签: php php-5.6

在PHP中,我喜欢在一个步骤中声明对象(stdClass的新实例)的能力,如下所示:

$obj = (object) ['a','b','c'];

这很好.. 是一个类属性:

class Foo {
    public $obj = (object) ['a','b','c'];
}

我收到以下错误:

  

语法错误,意外'(对象)'(对象)(T_OBJECT_CAST)

还有另一种方法可以实现这一目标吗?并且,有谁知道为什么不允许上面的代码(也许特定于PHP 5.6)?我无法在任何地方找到具体的文档。

1 个答案:

答案 0 :(得分:3)

引用PHP Docs

  

它们[对象属性]是使用关键字public,protected或private之一定义的,后跟普通变量声明。此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,而必须不依赖于运行时信息。为了评估

(我的重点)

public $obj = (object) ['a','b','c'];

依赖于run-time信息,即运行时将数组转换为对象

绕过这个的方法是在构造函数中分配值