为什么常量不能被空检查?

时间:2013-06-25 11:13:40

标签: php constants is-empty

为什么

if (!empty(constant('MY_CONST')))

抛出此错误

Fatal error: Can't use function return value in write context

我该如何解决它?

4 个答案:

答案 0 :(得分:5)

请参阅说明here

  

在PHP 5.5之前,empty()仅支持变量;其他任何东西都会导致解析错误。换句话说,以下将不起作用:empty(trim($ name))。相反,使用trim($ name)== false。

因此,您应该与null进行比较,因为constant()将返回null未定义的常量,或使用defined()代替。

if(constant('MY_CONST')!==null) { ... }
if(!defined('MY_CONST')) { ... }

答案 1 :(得分:2)

使用PHP 5.5.0,您的代码将按原样运行。但是,为了向后兼容,您可以简单地将语句分成2个部分。

$a = constant('MY_CONST');
if(!empty($a)) { //do something }

或者,您可以使用defined()功能。

答案 2 :(得分:0)

这是由于PHP中的实现细节:在PHP 5.4.x之前,只能使用empty()来测试变量。

你想要做的事情可能会在php 5.5中运行。或者,使用:

if (defined('CONST') && CONST)

答案 3 :(得分:0)

empty()只能用于检查变量。请参阅php手册。您可以使用已定义的。

if (defined('TEST')) {
    echo TEST;
}