2016-05-11 78 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

謝謝你的解釋和鏈接! (我之前完全錯過了那個位置)我的特殊用法是在一個特徵中,所以不幸的是構造函數的賦值對我來說是不合適的。 –

相關問題