@Shimpanze

Как присвоить вычисленное значение константе?

Здравствуйте!

Подскажите как можно присвоить вычисленное значение константе внутри класса?

Нужен вот такой вызов: print FOO::PATH;

Пишу класс:

class FOO {
    const PATH = preg_replace( '/^\//', '', __DIR__ );
}


Вызываю, не работает:

print FOO::PATH;
  • Вопрос задан
  • 98 просмотров
Решения вопроса 2
glaphire
@glaphire Куратор тега PHP
PHP developer
документация
A constant is an identifier (name) for a simple value. As the name suggests, that value cannot change during the execution of the script (except for magic constants, which aren't actually constants).

Тут два ответа сразу, почему не должно работать и не будет - константа не может принимать выражения и константа не должна меняться во время выполнения (у Вас она зависит от магической константы __DIR__)
Ответ написан
Комментировать
@Vitsliputsli
Это ограничение языка, возможно использование только простых выражений для объявления констант. Под простыми подразумеваются использующие операторы (например, конкатенация), но не функции (как в вашем примере). Хотя в документации об этом четко не сказано.
Что касается остальных комментариев здесь, то нет, это не переменная, т.к. никто не пытался изменить значение. А использование других констант в объявлении константы вполне допустимо, в том числе и магических констант.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@JohnDidact
Нуб во всём
Константа на то и константа, что данные хранит не переменные, а постоянные.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы