|
@@ -2,6 +2,10 @@
|
|
|
|
|
|
namespace Qii\Exceptions;
|
|
|
|
|
|
+use Qii\Autoloader\Import;
|
|
|
+use Qii\Autoloader\Psr4;
|
|
|
+use Qii\Config\Register;
|
|
|
+
|
|
|
if (class_exists('\Qii\Exceptions\Errors', false)) {
|
|
|
return;
|
|
|
}
|
|
@@ -18,8 +22,6 @@ class Errors extends \Exception
|
|
|
public static function getRelatePath($cur, $absp)
|
|
|
{
|
|
|
//获取路径名
|
|
|
- $absDirName = dirname($absp);
|
|
|
- $currentDirName = dirname($cur);
|
|
|
//去掉左边的"/"
|
|
|
$absDirName = trim($absp,"/");
|
|
|
$currentDirName = trim($cur,"/");
|
|
@@ -71,27 +73,30 @@ class Errors extends \Exception
|
|
|
}
|
|
|
$appConfigure = (array)\Qii::appConfigure();
|
|
|
|
|
|
- $env = \Qii\Config\Register::get(\Qii\Config\Consts::APP_ENVIRON, 'dev');
|
|
|
+ $env = Register::get(\Qii\Config\Consts::APP_ENVIRON, 'dev');
|
|
|
if ($env == 'product' || (isset($appConfigure['errorPage']) && $appConfigure['errorPage'] && (isset($appConfigure['debug']) && $appConfigure['debug'] == 0))) {
|
|
|
list($controller, $action) = explode(':', $appConfigure['errorPage']);
|
|
|
$controllerCls = $controller;
|
|
|
if(substr($controller, 0, 1) != '\\') {
|
|
|
- $controllerCls = \Qii\Config\Register::get(\Qii\Config\Consts::APP_DEFAULT_CONTROLLER_PREFIX) . '\\' . $controller;
|
|
|
+ $controllerCls = Register::get(\Qii\Config\Consts::APP_DEFAULT_CONTROLLER_PREFIX) . '\\' . $controller;
|
|
|
}
|
|
|
$action = preg_replace('/(Action)$/i', "", $action);
|
|
|
- $filePath = \Qii\Autoloader\Psr4::getInstance()->searchMappedFile($controllerCls);
|
|
|
+ $filePath = Psr4::getInstance()->searchMappedFile($controllerCls);
|
|
|
if (!is_file($filePath)) {
|
|
|
if ($env == 'product') return '';
|
|
|
- \Qii\Autoloader\Import::requires(Qii_DIR . DS . 'Exceptions' . DS . 'Error.php');
|
|
|
+ Import::requires(Qii_DIR . DS . 'Exceptions' . DS . 'Error.php');
|
|
|
call_user_func_array(array('\Qii\Exceptions\Error', 'index'), array($controller, $action));
|
|
|
die();
|
|
|
- } else {
|
|
|
- \Qii::getInstance()->request->setControllerName($controller);
|
|
|
- \Qii::getInstance()->request->setActionName($action);
|
|
|
- \Qii::getInstance()->dispatcher->setRequest(\Qii::getInstance()->request);
|
|
|
- \Qii::getInstance()->dispatcher->dispatch($controller, $action, $e);
|
|
|
- die();
|
|
|
}
|
|
|
+ \Qii::getInstance()->request->setControllerName($controller);
|
|
|
+ \Qii::getInstance()->request->setActionName($action);
|
|
|
+ //dispatcher是run 的时候初始化,所以这里可能会是空
|
|
|
+ if (\Qii::getInstance()->dispatcher == null) {
|
|
|
+ \Qii::getInstance()->setDispatcher();
|
|
|
+ }
|
|
|
+ \Qii::getInstance()->dispatcher->setRequest(\Qii::getInstance()->request);
|
|
|
+ \Qii::getInstance()->dispatcher->dispatch($controller, $action, $e);
|
|
|
+ die();
|
|
|
}
|
|
|
ob_start();
|
|
|
include(join(DS, array(Qii_DIR, 'Exceptions', 'View', 'error.php')));
|
|
@@ -168,9 +173,9 @@ class Errors extends \Exception
|
|
|
$message = array_shift($argvs);
|
|
|
$line = (int)array_pop($argvs);
|
|
|
if ($count == 2) {
|
|
|
- throw new \Qii\Exceptions\Errors($message, $line);
|
|
|
+ throw new Errors($message, $line);
|
|
|
}
|
|
|
$message = vsprintf($message, $argvs);
|
|
|
- throw new \Qii\Exceptions\Errors($message, $line);
|
|
|
+ throw new Errors($message, $line);
|
|
|
}
|
|
|
}
|