为什么
if (!empty(constant('MY_CONST')))
抛出此错误
Fatal error: Can't use function return value in write context
我该如何解决它?
答案 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;
}