这是来自php手册:http://us.php.net/manual/en/language.constants.syntax.php
如果使用未定义的常量,PHP假定您指的是常量本身的名称,就像您将其称为字符串一样(CONSTANT vs“CONSTANT”)。发生这种情况时,将发出级别E_NOTICE的错误。
我真的不喜欢这种行为。如果我没有定义一个必需的常量,我宁愿脚本失败,所以我被迫定义它。有没有办法强制PHP在尝试使用未定义的常量时崩溃脚本?
例如。这两个脚本都做同样的事情。
<?php
define('DEBUG',1);
if (DEBUG) echo('Yo!');
?>
和
<?php
if(DEBUG) echo('Yo!');
?>
我宁愿第二个脚本DIE并声明它试图使用未定义的常量DEBUG。
答案 0 :(得分:5)
你可以这样做(丑陋):
伪代码:
/**
* 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");
答案 1 :(得分:1)
if(!defined('DEBUG')) die('failed.');
答案 2 :(得分:1)
我认为没有办法更改引发的错误类型,但您可以使用error_reporting将错误报告更改为E_ALL
,以便在开发时看到这些错误:
error_reporting(E_ALL);