PHP CONSTANT没有设置,但仍然打印屏幕的东西?

时间:2010-01-29 21:48:57

标签: php constants

PHP是否假设显示错误,您是否调用不存在的CONSTANT?当我为下面的代码运行未定义的常量时,它会在屏幕上显示“TEST”而不是任何类型的错误。我的php.ini文件中是否有设置错误或这是新的东西?我正在运行PHP 5.3

<?php
echo TEST;
?>

4 个答案:

答案 0 :(得分:2)

它应该显示您可能未设置为可见的通知(E_NOTICE)。默认情况下,如果未定义常量,则显示文字值。

答案 1 :(得分:0)

在php中有一个默认值,一个未定义的常量被一个表示其名称的字符串静默替换。我认为它可以在php.ini中禁用,但在任何情况下都不应该依赖它。

答案 2 :(得分:0)

这只是一个警告或通知,我不太确定。不禁止使用未定义的常量。但是,echo FOO BAR;确实会失败,因为它等同于echo "FOO" "BAR";

您的error_reporting设置不会显示警告或通知,或者您的display_errors设置设置为false

你不应该依赖于此。

答案 3 :(得分:0)

正如其他人所说,引用一个未定义的常量是一个通知,而不是一个致命的错误(一个会导致PHP停止运行脚本的错误),PHP会将常量名称转换为字符串并继续前进。根据您的error_reporting设置,PHP可能会也可能不会打印消息。在PHP打印通知消息之前,您需要将其设置为至少8 (E_NOTICE)。如果您想要捕获未定义的常量情况并处理它(例如让PHP打印消息并退出),请使用defined函数,如下所示:

if (defined('TEST')) {
    echo TEST;
} else {
    // error handling here
}