2012-08-01 69 views
1

PHP中的類定義是否有一種方法將屬性設置爲具有設置屬性的STD對象?PHP設置類屬性到類定義中的std對象

我在想你可以鍵入轉換,但不允許在類定義中使用屬性。

//example. 
class Foo{ 
    private static $Obj = (object) ['bizz', 'bazz']; 
} 

這將觸發此錯誤:

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

+0

爲什麼你認爲什麼在[現有的回答同樣的問題(HTTP:// stackoverflow.com/a/2702875/367456)(但不限於PHP 5.4)在該PHP版本中應該有所不同? PHP Changelog的哪一部分讓你相信? – hakre 2013-04-29 09:47:52

回答

3

申報過程中不能分配給類屬性的非恆定值。從http://php.net/language.oop5.properties

...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.

你需要使用一個類的方法來初始化屬性,如

class Foo { 
    private static $Obj; 

    private static getObj() { 
     if (null === self::$Obj) { 
      self::$Obj = (object) ['bizz', 'bazz']; 
     } 
     return self::$Obj; 
    } 
+0

這就是我目前正在做的。糟糕的是沒有辦法做對象文字。 – Yamiko 2012-08-01 00:33:41

+0

還沒有用過5.4,還要再等幾個月,所以這可能是無知的。但是'self :: $ Obj =(object)['bizz','bazz'];'看起來像是試圖將'bizz'和'bazz'作爲anon對象進行投射,這些對象被分配給self :: $ Obj,是否強制self :: $ Obj爲數組數據類型,其中包含兩個anon對象? – 2012-08-01 00:34:00

+0

哈哈你的權利,這將是有問題的數組,但這裏有一些信息。 http://www.webmaster-source.com/2009/08/20/php-stdclass-storing-data-object-intead-array/ – Yamiko 2012-08-01 00:36:52