在写入上下文Laravel 4中不能使用函数返回值

我在我的代码中得到了无法使用函数返回值在 430行写入上下文错误,但我不明白为什么我得到这个错误..

奇怪的是,我只在服务器(PHP 5.3)上得到这个错误,而不是在我的本地主机上(PHP 5.5.10)

return  Redirect::route('account-activate-user', (empty(Input::get('code'))) ? '{code}' : e(Input::get('code')))
        ->with('global', 'De activatie-code is niet geldig.');

有没有人有解决这个问题的办法?


发生这种情况的原因是你使用empty()和函数的返回值( Input::get() ),当它只接受一个变量时。 考虑Input::get()工作方式,也就是说,当输入未设置时,您可以将第二个参数作为默认值传递,您可以完全跳过empty()检查并使用:

return  Redirect::route('account-activate-user', Input::get('code', '{code}'))
        ->with('global', 'De activatie-code is niet geldig.');

或者更接近你的代码:

return  Redirect::route('account-activate-user', (Input::has('code') ? '{code}' : e(Input::get('code')))
        ->with('global', 'De activatie-code is niet geldig.');

在PHP5.5之前,函数empty()不能接受返回值。

这意味着Input::get('code')返回一个值,并且该值不能传递给empty()函数。

虽然不是最好的解决方案,但可以通过这种方式快速修复:

$inputCode = Input::get('code');

return  Redirect::route('account-activate-user', (empty($inputCode)) ? '{code}' : e($inputCode))
->with('global', 'De activatie-code is niet geldig.');

但是,您可以在这里找到重复项:

在写入上下文中不能使用函数返回值?


我得到了同样的错误,并将PHP版本更新到5.5.x,为我解决了这个问题。

链接地址: http://www.djcxy.com/p/58433.html

上一篇: Can't use function return value in write context Laravel 4

下一篇: Meaning of "Can't use method return value in write context"