Symfony 2.3 - 自定义致命错误

时间:2013-08-11 19:22:16

标签: php symfony exception-handling error-handling symfony-2.3

我遇到了Symfony 2.3的问题,我无法让它工作以获得处理致命错误的自定义函数。 Symfony例外工作正常,如404等,但不是致命错误。

这是我在搜索互联网后得到的,我在TestBundle中创建了一个父控制器。另一个默认控制器扩展了TestingSomeThingController。请查看以下文件以获取代码。但是当我删除了;在DefaultController的行尾,它显示标准的致命错误页面,而不是我在代码中放入的“yaay”。有没有人对这个问题有答案?谢谢!

TestingSomeThingController

<?php

namespace TestingSomeThing\TestBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller as BaseController;
use Symfony\Component\HttpFoundation\Response;

class TestingSomeThingController extends BaseController
{
    public function __construct()
    {
        set_error_handler(array($this, 'sdfg'));
        register_shutdown_function(array($this, 'sdfg'));
    }

    public function sdfg()
    {
        $error = error_get_last();
        if(isset($error)) {
            echo 'yaay';
            die();
        }
    }
}

DefaultController

<?php

namespace TestingSomeThing\TestBundle\Controller;

use TestingSomeThing\TestBundle\Controller\TestingSomeThingController;

class DefaultController extends TestingSomeThingController
{
    public function indexAction($name)
    {
        return $this->render('TestingSomeThingBundle:Default:index.html.twig', array('name' => $name))
    }
}

1 个答案:

答案 0 :(得分:-5)

根据定义,致命错误是不可恢复的。

简单来说,这意味着不能再继续处理了。

没有办法处理它,你也不想尝试。 重点是告诉你发生了致命的事情,不再进行任何处理。

fa·tal /fātl/ 形容词 (1)导致死亡。 (2)导致失败或灾难。

几乎所有语言(包括英语)都是如此,并且不是Symfony或PHP特有的东西 - 你根本无法从致命的东西中恢复过来。