Почему некоторые коды используют define () без кавычек имени константы?

Документация PHP описывает define() функция с именем константы в виде строки. Так и должно быть в кавычках:

define('ANY_CONSTANT',1);

Однако я видел множество примеров без кавычек:

define(ANY_CONSTANT,1);

Я также проверил оба способа в онлайн тестер PHP и оба работали правильно.

Может кто-нибудь объяснить немного: есть ли разница между этими двумя методами? Кто-нибудь из них лучше? При каких обстоятельствах?

1

Решение

Краткий ответ: да, вы должны.

Если вы этого не сделаете, PHP будет искать константу с этим именем, не найдет ее, и предположит, что это строка, и использовать ее как таковую. Это создаст уведомление в журнале ошибок, если вы настроите PHP для отправки уведомлений.

7

Другие решения

С помощью

определяют (ANY_CONSTANT, 1);

вызовет предупреждение:

Примечание PHP: использование неопределенной константы ANY_CONSTANT — предполагается
‘ANY_CONSTANT’

Поэтому вам обязательно нужно использовать кавычки.

1

(Как всегда) зависит от контекста:

define(ANY_CONSTANT,1);

законно, так как передача литерала (например, 'ANY_CONSTANT') не является обязательным — вы также можете передать константу (например, PHP_OS также). Вы должны убедиться, что не путаете литералы с константами.

Почему это «работает» для вас — опасный подход, так как в одном случае вы, возможно, просто забыли цитату, но в другом случае вы определенно хотели бы использовать константу. Отсюда и уведомления, которые выкинет PHP.

1
По вопросам рекламы [email protected]