Yii,如何在不结束PHP脚本执行的情况下结束Yii应用程序执行

时间:2013-08-24 23:00:28

标签: yii wordpress php

我目前正在编写一个应用程序作为wordpress的插件,因此我需要一些非传统的解决方案..

目前我的问题是,当Yii收到错误时,它会在错误处理程序中抛出错误,然后退出PHP执行。是不是应该有沙箱Yii的方法让它只退出它自己的执行并让外部代码继续?

在我的情况下,大多数页面都是空白的,并且没有任何wordpress主题被加载..所以设计好的错误页面变得非常hacky。 (当一切正常时,wordpress在the_content()中加载Yii;并且它与wordpress主题融合。)

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您有两种选择:

  1. 您必须try catch每个可能出现异常的位置
  2. 处理错误,然后一旦出现异常,它会将您的所有应用程序重定向到所需的美容错误页面(使用Wordpress主题)
  3.   

    Yii允许使用控制器操作来处理错误显示工作。   为此,我们应该在应用程序中配置错误处理程序   配置如下:

    return array(
        ......
        'components'=>array(
            'errorHandler'=>array(
                'errorAction'=>'site/error',
            ),
        ),
    );
    
      

    在上面,我们将CErrorHandler :: errorAction属性配置为   是路由站点/错误,它指的是错误操作   SiteController。如果需要,我们可以使用不同的路线。

    public function actionError()
    {
        if($error=Yii::app()->errorHandler->error)
            $this->render('error', $error);
    }
    

    使用WordPress时,您可以自定义路线以及视图的主题

    Yii handling error details

答案 1 :(得分:1)

您可能希望最终覆盖默认的Yii错误/异常处理程序以放入自定义处理程序。如果您查看我关于integrating Yii/Wordpress的文章,可以使用一个预期处理程序覆盖的示例。适应你的使用,你应该没事。

调整站点/错误处理程序不会最终适合您,因为它往往会抛出400错误标题,即使您呈现不同的页面也无法停止。在整合Yii和Wordpress的过程中遇到困难,正如我先尝试过的那样。

如果你了解它,请告诉我们,希望有更好的示例代码将Yii作为插件融合。

答案 2 :(得分:0)

结束Yii,正确清理并且不退出请求。如http://www.yiiframework.com/doc/api/1.1/CApplication#end-detail所示,它就是这样完成的。

Yii::app()->end(0, false);