Laravel 5 - Application::shutdown() 函数未找到,是否有其他替代方案?

3

出现致命错误:

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

代码示例:

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

2
你是否在没有任何代码的情况下遇到了这个错误? - Rizier123
可能会对别人有所帮助。在较新的 Laravel 版本中,您可以使用 middlewareservice provider - Binar Web
2个回答

5

在laravel 5中,Application::shutdown方法已被删除,请注册“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
谢谢,顺便说一下,它是 TerminableInterface 而不是 TerminableMiddleware - Javid

0

Laravel 5仍然是beta软件,所以如果出现问题,请不要感到惊讶。您可能会收到该错误,因为

Application::shutdown(function(){});

在Laravel 4中,设置关闭事件处理程序的有效方法,但在Laravel 5中,这不是设置关闭事件监听器的有效方法。

这可能是因为Laravel 5正在向带注释的事件系统转移,或者可能是由于Laravel 5中的临时开发故障。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接