Я знаю, что вы можете создавать глобальные константы в терминах друг друга, используя конкатенацию строк:
define('FOO', 'foo');
define('BAR', FOO.'bar');
echo BAR;
напечатает "foobar".
Тем не менее, я получаю сообщение об ошибке, пытающееся сделать то же самое с использованием констант класса.
class foobar {
const foo = 'foo';
const foo2 = self::foo;
const bar = self::foo.'bar';
}
foo2 определяется без проблем, но объявление const bar приведет к ошибке
Ошибка анализа: синтаксическая ошибка, неожиданные '.', ожидающие ',' или ';'
Я также пробовал использовать такие функции, как sprintf(), но он не похож на левый парн больше, чем на конкатенатор строк. '.
Итак, есть ли способ создать константы класса в терминах друг друга в чем-то более чем тривиальном случае набора, таком как foo2?