2012-03-07 96 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。使用表达式在类方法外部初始化类成员也不起作用。