Я знаю, что вы можете создавать глобальные константы в терминах друг друга, используя конкатенацию строк:
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?