Документация PHP описывает define()
функция с именем константы в виде строки. Так и должно быть в кавычках:
define('ANY_CONSTANT',1);
Однако я видел множество примеров без кавычек:
define(ANY_CONSTANT,1);
Я также проверил оба способа в онлайн тестер PHP и оба работали правильно.
Может кто-нибудь объяснить немного: есть ли разница между этими двумя методами? Кто-нибудь из них лучше? При каких обстоятельствах?
Краткий ответ: да, вы должны.
Если вы этого не сделаете, PHP будет искать константу с этим именем, не найдет ее, и предположит, что это строка, и использовать ее как таковую. Это создаст уведомление в журнале ошибок, если вы настроите PHP для отправки уведомлений.
С помощью
определяют (ANY_CONSTANT, 1);
вызовет предупреждение:
Примечание PHP: использование неопределенной константы ANY_CONSTANT — предполагается
‘ANY_CONSTANT’
Поэтому вам обязательно нужно использовать кавычки.
(Как всегда) зависит от контекста:
define(ANY_CONSTANT,1);
законно, так как передача литерала (например, 'ANY_CONSTANT'
) не является обязательным — вы также можете передать константу (например, PHP_OS
также). Вы должны убедиться, что не путаете литералы с константами.
Почему это «работает» для вас — опасный подход, так как в одном случае вы, возможно, просто забыли цитату, но в другом случае вы определенно хотели бы использовать константу. Отсюда и уведомления, которые выкинет PHP.