Я могу использовать конкатенацию строк для определения класса КОНСТАНТА в PHP?

Я знаю, что можно создать глобальные константы друг с точки зрения друга использующего конкатенацию строк:

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 определяется без проблемы, но объявление панели константы будет ошибка

Ошибка анализа: синтаксическая ошибка, неожиданная '. ', ожидая'', или'';

Я также попытался использовать функции как sprintf (), но ему больше не нравится левый paren, чем строка concatenator '.'.

Таким образом, там какой-либо путь состоит в том, чтобы создать константы класса друг с точки зрения друга в чем-то большем чем тривиальном случае набора как foo2?

48
задан selfsimilar 7 May 2010 в 04:50
поделиться

4 ответа

нет.

(я не думаю, что есть)

0
ответ дан 7 November 2019 в 12:36
поделиться

Единственный способ - определить () выражение и затем использовать эту константу в классе

define('foobar', 'foo' . 'bar');

class Foo
{
    const blah = foobar;
}

echo Foo::blah;

Другой вариант - зайти на bugs.php.net и любезно попросите их исправить это.

34
ответ дан 26 November 2019 в 18:55
поделиться

Для констант класса ничего нельзя присвоить кроме постоянного выражения. Цитата из руководства PHP :

«Значение должно быть константным выражением, а не (например) переменной, свойством, результатом математической операции или вызовом функции».

2
ответ дан 26 November 2019 в 18:55
поделиться

В подобных случаях всегда обращайтесь к надежному руководству.

Относительно констант :

Значение должно быть константным выражением, а не (например) переменной , свойством, результатом {{ 1}} математическая операция или вызов функции .

Итак ... "нет" будет ответом: D

14
ответ дан 26 November 2019 в 18:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: