mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-01 20:52:48 +08:00
改进App类的反射异常无法捕获问题
This commit is contained in:
@@ -369,33 +369,28 @@ class App
|
||||
// 监听module_init
|
||||
Hook::listen('module_init', $request);
|
||||
|
||||
try {
|
||||
$instance = Loader::controller($controller, $config['url_controller_layer'], $config['controller_suffix'], $config['empty_controller']);
|
||||
if (is_null($instance)) {
|
||||
throw new HttpException(404, 'controller not exists:' . Loader::parseName($controller, 1));
|
||||
}
|
||||
// 获取当前操作名
|
||||
$action = $actionName . $config['action_suffix'];
|
||||
if (!preg_match('/^[A-Za-z](\w)*$/', $action)) {
|
||||
// 非法操作
|
||||
throw new \ReflectionException('illegal action name:' . $actionName);
|
||||
}
|
||||
$instance = Loader::controller($controller, $config['url_controller_layer'], $config['controller_suffix'], $config['empty_controller']);
|
||||
if (is_null($instance)) {
|
||||
throw new HttpException(404, 'controller not exists:' . Loader::parseName($controller, 1));
|
||||
}
|
||||
// 获取当前操作名
|
||||
$action = $actionName . $config['action_suffix'];
|
||||
|
||||
if (is_callable([$instance, $action])) {
|
||||
// 执行操作方法
|
||||
$call = [$instance, $action];
|
||||
Hook::listen('action_begin', $call);
|
||||
|
||||
$data = self::invokeMethod($call);
|
||||
} catch (\ReflectionException $e) {
|
||||
} elseif (is_callable([$instance, '_empty'])) {
|
||||
// 空操作
|
||||
$call = [$instance, '_empty'];
|
||||
} else {
|
||||
// 操作不存在
|
||||
if (method_exists($instance, '_empty')) {
|
||||
$reflect = new \ReflectionMethod($instance, '_empty');
|
||||
$data = $reflect->invokeArgs($instance, [$action]);
|
||||
self::$debug && Log::record('[ RUN ] ' . $reflect->__toString(), 'info');
|
||||
} else {
|
||||
throw new HttpException(404, 'method not exists:' . (new \ReflectionClass($instance))->getName() . '->' . $action);
|
||||
}
|
||||
throw new HttpException(404, 'method not exists:' . get_class($instance) . '->' . $action . '()');
|
||||
}
|
||||
|
||||
Hook::listen('action_begin', $call);
|
||||
|
||||
$data = self::invokeMethod($call);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user