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

时间:2014-11-23 09:02:07

标签: php laravel-4

我的代码中第430行的无法在写入上下文中使用函数返回值错误,但我无法理解为什么会出现此错误..

奇怪的是,我只在服务器(PHP 5.3)上得到此错误,而不是在我的localhost(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.');

有没有人能解决这个问题?

3 个答案:

答案 0 :(得分:3)

这是因为您只使用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.');

答案 1 :(得分:1)

在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.');

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

Can't use function return value in write context?

答案 2 :(得分:1)

我遇到了同样的错误并将PHP版本更新到5.5.x为我修复了它。