Существует ли опция конфигурации в PHP, чтобы препятствовать тому, чтобы неопределенные константы были интерпретированы как строки?

Это из php руководства: http://us.php.net/manual/en/language.constants.syntax.php

При использовании неопределенной константы PHP предполагает значение названия самой константы так же, как если бы Вы назвали его как строку (ПОСТОЯННЫМ по сравнению с "ПОСТОЯННЫМ"). Ошибка уровня, E_NOTICE будет выпущен, когда это произойдет.

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

Например. Оба из этих сценариев делают то же самое.


и


Я быть бы второй сценарий УМИРАТЬ и объявлять, что пытался использовать неопределенную постоянную ОТЛАДКУ.

5
задан Brian Tompsett - 汤莱恩 27 November 2015 в 15:46
поделиться

3 ответа

Можно сделать что-то (уродливое) вроде этого:

псевдокод:

/**
 * 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");
5
ответ дан 14 December 2019 в 08:45
поделиться

Я не думаю, что есть способ изменить тип выдаваемой ошибки, но вы можете изменить отчет об ошибках на E_ALL, используя error_reporting, чтобы вы видели эти ошибки во время разработки:

error_reporting(E_ALL);
1
ответ дан 14 December 2019 в 08:45
поделиться
if(!defined('DEBUG')) die('failed.');
1
ответ дан 14 December 2019 в 08:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: