要自动加载包(根据CI
),您应该将以下数组放入package path/name
以下数组,例如
$autoload['packages'] = array(APPPATH.'third_party', '/usr/local/shared');
但它不会自动执行任何代码,而是让您的包无需显式加载即可使用。
要使某些代码每次都执行,您可以将该代码放入基本控制器的constructor
函数中。此外,您可以将代码放入config.php
文件中。如果您有扩展的基本控制器,例如application/core/MY_Controller.php
class MY_Controller extends CI_Controller {
//
}
然后你可以使用它的构造函数
class MY_Controller extends CI_Controller {
function __construct()
{
parent::__construct();
$this->bugsnag = new Bugsnag_Client("YOUR-API-KEY-HERE");
set_error_handler(array($bugsnag, "errorHandler"));
set_exception_handler(array($bugsnag, "exceptionHandler"));
}
}
您的其他控制器将使用/扩展MY_Controller
而不是CI_Controller
.
但是您也可以hook
在这种情况下使用 a (注册自定义异常处理程序),在application/config/hooks.php
文件中,放入以下代码
$hook['pre_controller'][] = array(
'class' => 'CustomExceptionHook',
'function' => 'SetExceptionHandlers',
'filename' => 'CustomExceptionHook.php',
'filepath' => 'hooks'
);
application/hooks/CustomExceptionHook.php
在文件夹中创建一个类,例如
class CustomExceptionHook
{
public function SetExceptionHandlers()
{
// add package path (if not auto-loaded)
$this->load->add_package_path(APPPATH.'third_party/package_folder/');
// load package (if not auto-loaded)
$this->load->library('Bugsnag_Client');
set_error_handler(array($this->Bugsnag_Client, "errorHandler"));
set_exception_handler(array($this->Bugsnag_Client, "exceptionHandler"));
}
}