Константы, должно быть, константы, поэтому вы не можете работать с выражением здесь.
Я не советую вам 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);