2016-05-11 50 views
0

在PHP中,我喜欢一步到位,像这样申报对象(stdClass的新实例)的能力:有没有办法将“数组”转换为(object)作为class/trait的属性?

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

这个伟大的工程... 其作为类属性:

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

我得到以下错误:

syntax error, unexpected '(object)' (object) (T_OBJECT_CAST)

的是换另一种方法来完成这个?而且,有没有人知道为什么上面的代码是不允许的(也许特定于PHP 5.6)?我无法在任何地方找到具体的文档。

+0

您是否尝试将其转换为构造函数并将其分配给属性? – JavaMachine

+0

我不认为你可以在PHP中使用json表示法,至少据我所知,我不知道是否在新版本中添加了这种表示法。然后,如果你想投射到一个物体,我认为你应该把这个数组转换成一个assoc数组 – NoImaginationGuy

+0

特别是对于特质,单线投射方法是非常方便的,因为没有其他的一举一动的方法来定义和设置一个对象那(AFAIK)。而且,由于实现一个构造函数以及一个特性是一个坏消息,我将不得不忍受一个数组。 –

回答

3

PHP Docs报价:

They [object properties] are defined by using one of the keywords public, protected, or private, followed by a normal variable declaration. This declaration may include an initialization, but this initialization must be a constant value -- that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.

(我的重点)

而且

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

取决于run-time信息,即运行时间阵列的铸造反对

周游的方式是在构造函数中分配值

+0

谢谢你的解释和链接! (我之前完全错过了那个位置)我的特殊用法是在一个特征中,所以不幸的是构造函数的赋值对我来说是不合适的。 –

相关问题