1

为什么

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

抛出这个错误

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

我该如何解决?

4

4 回答 4

5

请参阅此处的注释:

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

因此,您应该与nullas constant()will return nullfor undefined 常量进行比较,或者defined()改为使用。

if(constant('MY_CONST')!==null) { ... }
if(!defined('MY_CONST')) { ... }
于 2013-06-25T11:17:01.420 回答
2

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

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

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

于 2013-06-25T11:19:32.010 回答
0

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

if (defined('TEST')) {
    echo TEST;
}
于 2013-06-25T11:19:12.783 回答
0

这是由于 PHP 中的实现细节:在 PHP 5.4.x 之前,只有变量可以使用empty().

你正在尝试做的可能会在 php 5.5 中工作。或者,使用:

if (defined('CONST') && CONST)
于 2013-06-25T11:17:09.827 回答