如何过载关机功能?

时间:2011-01-09 15:29:34

标签: php kohana

我正在使用Kohana(v3)框架,但我认为它与特定框架无关。

我所拥有的基本上是一个带有前端的应用程序,我想使用Kohana的原生Kohana::shutdown_handler(),但我也有一部分 - RESTful API - 我不想要多彩和html - 编码异常报告。我想要一个纯文本报道。

我认为它可能有用的方法是在API的控制器抽象类构造函数中注册另一个关闭函数,但后来我意识到register_shutdown_function()set_exception_handler()的工作方式不同而不是替换它添加了另一个函数关机程序。更糟糕的是PHP不允许“取消注册”关闭功能,这就是我的问题所在。

怎么做,如果你想使用另一个已经注册的关闭函数而不是

2 个答案:

答案 0 :(得分:1)

您可以通过自定义视图重载

views/kohana/error
并设置

/**
 * Initialize Kohana, setting the default options.
 *
 * The following options are available:
 *
 * - string   base_url    path, and optionally domain, of your application   NULL
 * - string   index_file  name of your index file, usually "index.php"       index.php
 * - string   charset     internal character set used for input and output   utf-8
 * - string   cache_dir   set the internal cache directory                   APPPATH/cache
 * - boolean  errors      enable or disable error handling                   TRUE
 * - boolean  profile     enable or disable internal profiling               TRUE
 * - boolean  caching     enable or disable internal caching                 FALSE
 */
Kohana::init(array(
 'base_url' => '/',
 'errors'   => FALSE,
));

答案 1 :(得分:0)

首先想到的是在任何其他register_shutdown_function()调用之前添加您的函数,并让它调用任何必要的关闭函数,然后调用exit或die来立即结束脚本而不调用其他关闭函数。 为确保您的通话是第一位的,我会为其创建一个单独的文件,并将其添加为php.ini的auto_prepend_file
称之为黑客......也许吧。它有用吗?我99%肯定应该。