Laravel 5 - 找不到Application :: shutdown()函数,还有其他替代解决方案吗?

时间:2014-12-30 18:31:41

标签: php laravel laravel-5

致命致命错误:

  

在laravel 5中调用未定义的方法Illuminate \ Foundation \ Application :: shutdown()

代码示例

App::shutdown(
    function () {
        // do somthing 
    }
);

2 个答案:

答案 0 :(得分:4)

注册"关闭"在laravel 5中删除了Application :: shutdown方法的回调 https://github.com/laravel/framework/commit/62ae860596f17a80954c106ff179288205a74d78

作为替代方案,您可以使用

1) register_shutdown_function php原生功能

2)使用laravel中间件并实现Illuminate \ Contracts \ Routing \ TerminableMiddleware界面

你需要工具

public function terminate($request, $response)

TerminableMiddleware接口的功能。 将在脚本结束时调用terminate函数。

例如,laravel在 Illuminate \ Session \ Middleware \ StartSession 类中使用 TerminableMiddleware 接口,以在脚本末尾存储会话数据

代码示例表单源

public function terminate($request, $response)
{
    if ($this->sessionConfigured() && ! $this->usingCookieSessions())
    {
        $this->manager->driver()->save();
    }
}

答案 1 :(得分:0)

Laravel 5仍然是测试版软件,因此当事情破裂时不要感到惊讶。您可能会收到该错误,因为

Application::shutdown(function(){});
即使在Laravel 4中,

也是为关闭设置事件处理程序的有效方法,它是在Laravel 5中设置关闭事件监听器的有效方法。

这可能是因为Laravel 5正朝着annotated event system发展,或者可能是因为Laravel 5中的临时发展故障。