PHP 定义的奇怪行为()
Strange behaviour of PHP defined()
我在 apache 虚拟主机文件中设置了一个环境变量 SetEnv YII_ENV prod
,因为我的项目中有以下行:
defined('YII_ENV') or define('YII_ENV', 'dev');
问题是 defined() 的行为真的很奇怪。我试过以下代码:
echo getenv('YII_ENV');
echo '<br>';
var_dump(defined('YII_ENV'));
结果:
prod
bool(false)
我可以回显 var 的值,但 defined() returns 为假。我知道我可以重写条件,但我真的很好奇为什么会这样。
解释 - defined
函数
Checks whether a given named constant exists
因此,defined('YII_ENV')
检查 constant YII_ENV
是否 defined.
但具有相同名称 YII_ENV
的 环境变量 不是 常量 ,它是另一个实体。
这就是你得到输出的原因,这是完全正确的。
我在 apache 虚拟主机文件中设置了一个环境变量 SetEnv YII_ENV prod
,因为我的项目中有以下行:
defined('YII_ENV') or define('YII_ENV', 'dev');
问题是 defined() 的行为真的很奇怪。我试过以下代码:
echo getenv('YII_ENV');
echo '<br>';
var_dump(defined('YII_ENV'));
结果:
prod
bool(false)
我可以回显 var 的值,但 defined() returns 为假。我知道我可以重写条件,但我真的很好奇为什么会这样。
解释 - defined
函数
Checks whether a given named constant exists
因此,defined('YII_ENV')
检查 constant YII_ENV
是否 defined.
但具有相同名称 YII_ENV
的 环境变量 不是 常量 ,它是另一个实体。
这就是你得到输出的原因,这是完全正确的。