diff --git a/library/think/App.php b/library/think/App.php index 24163372..9ff748df 100644 --- a/library/think/App.php +++ b/library/think/App.php @@ -337,9 +337,10 @@ class App } catch (\ReflectionException $e) { // 操作不存在 if (method_exists($instance, '_empty')) { - $method = new \ReflectionMethod($instance, '_empty'); - $data = $method->invokeArgs($instance, [$action, '']); - self::$debug && Log::record('[ RUN ] ' . $method->__toString(), 'info'); + $reflect = new \ReflectionMethod($instance, '_empty'); + $args = self::bindParams($reflect, Request::instance()->param()); + $data = $reflect->invokeArgs($instance, [$action, $args]); + self::$debug && Log::record('[ RUN ] ' . $reflect->__toString(), 'info'); } else { throw new HttpException(404, 'method not exists:' . (new \ReflectionClass($instance))->getName() . '->' . $action); } diff --git a/library/think/controller/Rest.php b/library/think/controller/Rest.php index a58743b3..a5288092 100644 --- a/library/think/controller/Rest.php +++ b/library/think/controller/Rest.php @@ -11,8 +11,8 @@ namespace think\controller; -use think\Response; use think\Request; +use think\Response; abstract class Rest { @@ -38,7 +38,7 @@ abstract class Rest { // 资源类型检测 $request = Request::instance(); - $ext = $request->ext(); + $ext = $request->ext(); if ('' == $ext) { // 自动检测资源类型 $this->type = $request->type(); @@ -76,7 +76,7 @@ abstract class Rest $fun = $method . '_' . $this->method; } if (isset($fun)) { - return $this->$fun(); + return call_user_func_array([$this, $fun], $args); } else { // 抛出异常 throw new \Exception('error action :' . $method);