phpWind的前端控制器AbstractWindFrontController.php中是這樣使用的,
成都創(chuàng)新互聯(lián)主要從事網(wǎng)站制作、做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)清河,10余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
/**
* 創(chuàng)建并執(zhí)行當(dāng)前應(yīng)用,單應(yīng)用訪問入口
*/
public function run() {
$this->_app = $this->createApplication($this->_config['web-apps'][$this->_appName],
WindFactory::_getInstance());
set_error_handler(array($this, '_errorHandle'), error_reporting());//調(diào)用了當(dāng)前抽象類中的_errorHandle()方法
set_exception_handler(array($this, '_exceptionHandle'));
if ($this->_config['isclosed']) {
throw new Exception('Sorry, Site has been closed!');
}
if ($this->_chain !== null) $this->_chain->getHandler()->handle('onCreate');
/* @var $router WindRouter */
$router = $this->_app->getFactory()->getInstance('router');
$router->route($this->_app->getRequest());
if ($this->_chain !== null) $this->_chain->getHandler()->handle('onStart');
$this->_app->run($router);
if ($this->_chain !== null) $this->_chain->getHandler()->handle('onResponse');
$this->_app->getResponse()->sendResponse();
$this->_app->getFactory()->executeDestroyMethod();
restore_error_handler();
restore_exception_handler();
}
/**
* 錯誤處理句柄
*
* @param int $errno
* @param string $errstr
* @param string $errfile
* @param int $errline
*/
public function _errorHandle($errno, $errstr, $errfile, $errline) {
if (0 === error_reporting()) return;
restore_error_handler();
/* @var $error WindError */
$error = $this->_app->getFactory()->getInstance('error',
array(
$this->_config['web-apps'][$this->_appName]['error-dir'],
$this->_config['isclosed']));
$error->errorHandle($errno, $errstr, $errfile, $errline);
}
最后調(diào)用了WindError基類中的errorHandle()方法,用showErrorMessage()將錯誤拋出,如下:
/**
* 錯誤處理句柄
*
* @param int $errno
* @param string $errstr
* @param string $errfile
* @param int $errline
*/
public function errorHandle($errno, $errstr, $errfile, $errline) {
$trace = array();
if (Wind::$isDebug) {
$trace = debug_backtrace();
unset($trace[0]["function"], $trace[0]["args"]);
}
$this->showErrorMessage($this->_friendlyErrorType($errno) . ': ' . $errstr, $errfile,
$errline, $trace, $errno);
}