在PHP中,如果我定义这样的常量:
define('FOO', true);
if(FOO) do_something();
方法
do_something
将按预期执行。但是,如果我没有在下面定义
BOO
常量:if(BOO) do_something();
然后
do_something
也被执行。这里发生了什么? 最佳答案
// BOO has not been defined
if(BOO) do_something();
BOO
将被强制转换为字符串BOO
,该字符串不是空的,因此是正确的。这就是为什么有些人不了解的人会使用
$something[a]
访问数组成员的原因。您应该使用
error_reporting(E_ALL)
进行编码,这将为您提供...您可以查看它是否是使用
defined()
定义的。许多人使用以下行,因此在其环境外部访问的PHP文件将无法运行...<?php defined('APP') OR die('No direct access');
这利用了short circuit evaluation-如果左侧为true,则不需要运行右侧。
关于PHP未定义的常数测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5427886/