为什么在 define() 中调用函数会破坏我的网站


Why does calling a function within define() break my site?

以下内容严重破坏了我的网站:

define('FOO', get_foo());

但是,以下工作正常:

define('FOO', 'BAR');

你不能在定义中使用函数,这不好。定义用于创建常量。常量不得更改,必须始终具有相同的值。函数(如 get_foo())可以返回不同的值。Php 认为你想把可更改的值放在常量上。如果此函数将结果放入变量:

$foo = get_foo();

因为 define() 需要常量的值而不是函数的返回值:

常量的值;只允许标量值和空值。 标量值为整数、浮点数、字符串或布尔值。是的 可以定义资源常量,但不建议这样做 并可能导致不可预知的行为。