class Foo
{
const MY_CONST = 'this is ' . 'data' ; //use of concatenation
public function __construct() {}
}
这会出错:
语法错误,意外'。', 期待','或';'
然后我应该如何使用常量连接?
答案 0 :(得分:3)
您无法在那里指定表达式。您只能在类定义中定义普通值。
这里唯一的解决方法是在构造函数中使用runkit_constant_add()
,这在所有PHP设置中都不可用。
答案 1 :(得分:1)
常量,应该是常量,这就是为什么你不能在这里使用表达式。
我不建议runkit_constant_add()
,因为它会变量变量(或某种变量)中的常量,但事实并非如此。
要解决此问题,我通常会将我的常量“包装”在受保护的数组中。 使用常量来使用数组的键,以获得更复杂的表达式。
class Foo {
const YEAR = 'year';
const DAYS = 'days';
protected $_templates = array(
self::YEAR => 'There is %s' . 'year ago',
self::DAYS => 'There are ' . '%s' . 'days ago',
);
public function getMessage($key)
{
return $this->_templates[$key];
}
}
让你使用:
$foo = new Foo();
$foo->getMessage(Foo::YEAR);