Это из php руководства: http://us.php.net/manual/en/language.constants.syntax.php
При использовании неопределенной константы PHP предполагает значение названия самой константы так же, как если бы Вы назвали его как строку (ПОСТОЯННЫМ по сравнению с "ПОСТОЯННЫМ"). Ошибка уровня, E_NOTICE будет выпущен, когда это произойдет.
Мне действительно не нравится это поведение. Если мне не удалось определить необходимую константу, я быть бы сбой сценария так, чтобы я был вынужден, определяют его. Там какой-либо путь состоит в том, чтобы вынудить PHP разрушить сценарий, если он пытается использовать неопределенную константу?
Например. Оба из этих сценариев делают то же самое.
и
Я быть бы второй сценарий УМИРАТЬ и объявлять, что пытался использовать неопределенную постоянную ОТЛАДКУ.
Можно сделать что-то (уродливое) вроде этого:
псевдокод:
/**
* A Notice becomes an Error :)
*/
function myErrorHandler($errno, $errstr, $errfile, $errline) {
if ($errno == E_NOTICE) { // = 8
if (substr($errstr ... )) { // contains something which looks like a constant notice...
trigger_error('A constant was not defined!', E_USER_ERROR);
}
}
}
set_error_handler("myErrorHandler");
set_error_handler()
Я не думаю, что есть способ изменить тип выдаваемой ошибки, но вы можете изменить отчет об ошибках на E_ALL
, используя error_reporting, чтобы вы видели эти ошибки во время разработки:
error_reporting(E_ALL);