我在我的脚本中使用了isset(),如果我使用常量而不是变量,则会抛出致命错误。
我的问题: 为什么当我使用带有常量致命错误的isset()时会抛出什么?
<?php
switch($current_page) {
case 'kb':
define('TITLE', 'Knowledge Base');
break;
case 'edit':
define('TITLE', 'Edit');
break;
case 'new':
define('TITLE', 'New');
break;
}
...
...
...
if (isset(TITLE)) {
echo "<h1>".TITLE."</h1>";
}
我运行了一些测试,发现常量和变量都有相同的数据类型:
define('TITLE', 'Test');
$title = 'Test';
var_dump(TITLE); // string(4) "Test"
var_dump($title); // string(4) "Test"
我检查了http://php.net/manual/en/language.constants.php并且没有看到任何可以解释这一点的内容。
答案 0 :(得分:4)
警告
isset()仅适用于变量,因为传递任何其他内容都会导致解析错误。要检查是否设置了常量,请使用defined()函数。
答案 1 :(得分:1)