2012-03-07 159 views
4

我有一個在constants.php中定義的稱爲PREFIX的常量。在Foo類中,我想創建一個以PREFIX作爲前綴的靜態類常量。但是我得到了const定義行的語法錯誤。如何從另一個常量變量創建靜態類常量變量?

require_once 'constants.php'; 

class Foo { 
    const FOO_CONST = PREFIX . 'bar'; 

    public function __construct() { 
    } 
} 
+0

你不能。除非你在那裏定義另一個常量,並在類中使用它:'define('BAR_CONST',PREFIX。'bar');'然後'const FOO_CONST = BAR_CONST;' – 2012-03-07 21:51:46

+0

你在開玩笑嗎?全局變量?哪裏? – 2012-03-07 22:44:34

+0

'define'基本上具有全局變量的所有缺陷 – JoJo 2012-03-08 00:33:38

回答

4

在PHP一個const必須是一個值,而不是一個表達式。 因此const FOO_CONST = 'foo' . 'bar';也不會工作。

您必須使用define或在構造函數中初始化的類成員,而不是const。使用表達式在類方法外部初始化類成員也不起作用。