在写上下文中不能使用方法返回值 [php]


Answers

注意:这是一个非常高的投票答案,具有很高的知名度,但请注意,它会促进不良的,不必要的编码实践! 请参阅@ Kornel的正确答案 。

注2:我赞同使用@ Kornel答案的建议。 当我三年前写这个答案的时候,我只是为了解释这个错误的本质,而不一定认同这个选择。 以下代码片段不推荐使用。

这是在5.5以下PHP版本中的empty()的限制。

注意:empty()仅检查变量,否则会导致解析错误。 换句话说,以下将不起作用:empty(trim($ name))。

你必须改变这个

// Not recommended, just illustrates the issue
$err = $r->getError();
if (!empty($err))
Question

我会认为下面的代码应该可以工作,但它不会(编辑:现在工作在PHP 5.5+)

if (!empty($r->getError()))

getError()只是简单的:

public function getError()
{
    return $this->error;
}

但是我终于发现了这个错误:

在写上下文中不能使用方法返回值

这是什么意思? 这不是只读吗?




我通常创建一个名为is_empty()的全局函数来解决这个问题

function is_empty($var)
{ 
 return empty($var);
}

然后我通常会使用空()我只是使用is_empty()




问题是这个,你想知道错误是否不为空。

public function getError() {
    return $this->error;
}

添加一个方法isErrorSet()将解决问题。

public function isErrorSet() {
    if (isset($this->error) && !empty($this->error)) {
        return true;
    } else {
        return false;
    }
}

现在这个代码可以正常工作,没有任何通知。

if (!($x->isErrorSet())) {
    echo $x->getError();
}




Tags