PHP CONSTANT не установлен, но все еще печатает что-то на экран? - PullRequest
0 голосов
/ 30 января 2010

Разве PHP не должен показывать ошибку, вы называете несуществующую CONSTANT? Когда я запускаю приведенный ниже код для константы, которая не определена, она показывает на экране «ТЕСТ» вместо любой ошибки. Может быть, у меня неправильная настройка в моем файле php.ini или это что-то новое? Я использую PHP 5.3

<?php
echo TEST;
?>

Ответы [ 4 ]

2 голосов
/ 30 января 2010

В нем должно отображаться уведомление, которое вы, возможно, не отметили как видимое (E_NOTICE). По умолчанию, если константа не определена, она показывает буквальное значение.

0 голосов
/ 30 января 2010

Как уже говорили другие, ссылка на неопределенную константу - это уведомление, а не фатальная ошибка (та, которая заставила бы PHP прекратить запуск скрипта), и PHP преобразует имя константы в строку и будет двигаться дальше. В зависимости от настроек error_reporting , PHP может печатать или не печатать сообщение. Вам нужно установить его как минимум 8 (E_NOTICE) , прежде чем PHP напечатает сообщение с уведомлением. Если вам нужно поймать неопределенную константную ситуацию и обработать ее (например, заставить PHP напечатать сообщение и выйти), используйте функцию определенные , например:

if (defined('TEST')) {
    echo TEST;
} else {
    // error handling here
}
0 голосов
/ 30 января 2010

Это просто предупреждение или уведомление, я не совсем уверен. Использование неопределенной константы не запрещено. Однако echo FOO BAR; действительно потерпит неудачу, потому что это эквивалентно echo "FOO" "BAR";.

Либо в параметре error_reporting не отображаются предупреждения или уведомления, либо для параметра display_errors установлено значение false.

Не стоит полагаться на это.

0 голосов
/ 30 января 2010

В php есть значение по умолчанию для неопределенной константы, которая должна быть тихо заменена строкой, представляющей ее имя. Я думаю, что это можно отключить в php.ini, но на него нельзя полагаться в любом случае.

...