改进Loader类action方法的错误提示

This commit is contained in:
thinkphp
2016-01-15 14:19:02 +08:00
parent 6282ff7cb4
commit df8e3d6d61
2 changed files with 6 additions and 15 deletions

View File

@@ -233,9 +233,6 @@ class App
$action = ACTION_NAME . Config::get('action_suffix'); $action = ACTION_NAME . Config::get('action_suffix');
} }
if (!$instance) {
throw new Exception('class [ ' . Loader::parseClass(MODULE_NAME, CONTROLLER_LAYER, CONTROLLER_NAME) . ' ] not exists', 10001);
}
try { try {
// 操作方法开始监听 // 操作方法开始监听
$call = [$instance, $action]; $call = [$instance, $action];

View File

@@ -131,7 +131,6 @@ class Loader
{ {
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
require $file; require $file;
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
} }
} }
@@ -153,7 +152,6 @@ class Loader
} }
} }
} }
// PSR-0 lookup // PSR-0 lookup
if (false !== $pos = strrpos($class, '\\')) { if (false !== $pos = strrpos($class, '\\')) {
// namespaced class name // namespaced class name
@@ -175,7 +173,6 @@ class Loader
} }
} }
} }
// Remember that this class does not exist. // Remember that this class does not exist.
return self::$map[$class] = false; return self::$map[$class] = false;
} }
@@ -314,10 +311,10 @@ class Loader
$action = new $class; $action = new $class;
$_instance[$name . $layer] = $action; $_instance[$name . $layer] = $action;
return $action; return $action;
} elseif ($empty && class_exists($class = self::parseClass($module, $layer, $empty))) { } elseif ($empty && class_exists($emptyClass = self::parseClass($module, $layer, $empty))) {
return new $class; return new $emptyClass;
} else { } else {
return false; throw new Exception('class [ ' . $class . ' ] not exists', 10001);
} }
} }
@@ -349,9 +346,8 @@ class Loader
if (is_string($vars)) { if (is_string($vars)) {
parse_str($vars, $vars); parse_str($vars, $vars);
} }
return call_user_func_array([ & $class, $action . Config::get('action_suffix')], $vars); $method = new \ReflectionMethod($class, $action . Config::get('action_suffix'));
} else { return $method->invokeArgs($class, $vars);
return false;
} }
} }
/** /**
@@ -375,11 +371,9 @@ class Loader
} else { } else {
$_instance[$identify] = $o; $_instance[$identify] = $o;
} }
} else { } else {
throw new Exception('class not exist :' . $class, 10007); throw new Exception('class not exist :' . $class, 10007);
} }
} }
return $_instance[$identify]; return $_instance[$identify];
} }
@@ -409,6 +403,6 @@ class Loader
*/ */
public static function parseClass($module, $layer, $name) public static function parseClass($module, $layer, $name)
{ {
return APP_NAMESPACE . '\\' . (APP_MULTI_MODULE ? $module . '\\' : '') . $layer . '\\' . self::parseName(str_replace('/', '\\', $name), 1); return APP_NAMESPACE . '\\' . (APP_MULTI_MODULE ? $module . '\\' : '') . $layer . '\\' . self::parseName(str_replace(['/', '.'], '\\', $name), 1);
} }
} }