栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

禁用Laravel错误处理程序

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

禁用Laravel错误处理程序

并非没有主要违反框架原理的问题(如果您仍然感兴趣,我将在下面告诉您如何做)。

有一些事情使这很难完成。取消默认错误和异常处理程序很容易

set_error_handler(null);set_exception_handler(null);

但这给您带来两个主要障碍。

第一个是Laravel在其引导过程中注册了一个关闭处理程序,该关闭功能将查找最后一个错误,如果是致命错误,请手动调用异常处理代码。

第二个是,主要的Laravel Application处理程序如下所示

#File: vendor/laravel/framework/src/Illuminate/Foundation/Application.phppublic function handle(SymfonyRequest $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true){    try    {        $this->refreshRequest($request = Request::createFrombase($request));        $this->boot();        return $this->dispatch($request);    }    catch (Exception $e)    {        if ($this->runningUnitTests()) throw $e;        return $this['exception']->handleException($e);    }}

也就是说-
如果您的应用程序代码引发异常,Laravel会在此处捕获该异常并手动调用该异常的

handleException
方法(这会触发标准的Laravel异常处理)。没有办法让PHP处理应用程序中发生的致命异常,Laravel阻止了这种异常的发生。

我告诉你如何做你想做的部分

所有这些意味着我们需要用自己的应用程序替换主要的Laravel应用程序。在中

bootstrap/start.php
,有以下几行

#File: bootstrap/start.php$app = new IlluminateFoundationApplication;

用以下内容替换

ini_set('display_errors','1');class MyApplication extends IlluminateFoundationApplication{    function startExceptionHandling()    {        //do nothing    }    public function handle(SymfonyComponentHttpFoundationRequest $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)    {        $this->refreshRequest($request = Request::createFrombase($request));        $this->boot();        return $this->dispatch($request);    }    }$app = new MyApplication;

我们要做的第一件事是将PHP的显示错误ini设置为

1
。这样可以确保将错误输出到浏览器。

接下来,我们定义一个新的应用程序类,以扩展实际的应用程序类。

最后,我们用

$app
类实例化的对象替换实际的Laravel 对象。

在应用程序类本身中,我们将其删除

startExceptionHandling
。这样可以防止Laravel设置自定义异常,错误和关闭回调。我们还定义
handle
了从try
/ catch中删除应用程序的启动/调度。这是该过程中最脆弱的部分,根据您的Laravel版本,外观可能有所不同。

最终警告

如果

handle
方法在将来的Laravel版本中更改,则将中断。

如果自定义包依赖于添加自定义异常处理程序,则它们可能会中断。

除了临时调试技术外,我建议不要使用此方法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/465909.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号