2013-07-23 92 views
1

我想創建一個具有私有靜態屬性的類(例如Bar)。該屬性應該是Foo的一組對象。PHP:靜態屬性中的類實例拋出異常

<?php 

class Foo { 

} 

class Bar { 
    private static $classes = array(new Foo(), new Foo()); 

    public static function testClasses() { 
     var_dump(self:$classes); 
    } 
} 

Bar::testClasses(); 

但是這個代碼拋出一個異常:

PHP Parse error: syntax error, unexpected 'new' (T_NEW), expecting ')' in [...]/test.php on line 8 

有人可以解釋我爲什麼這是不可能的?

回答

2

docs

這個聲明可能包括初始化,但初始化必須是一個恆定值 - 也就是說,它必須能夠在編譯時進行評估,不能依賴於運行時間信息以便評估。

您使用的新實例的屬性定義的類,因爲你2秒快速依賴於運行時信息

+0

+1;) – dbf