改进控制器的空操作方法调用 改进Rest控制器的_empty方法

This commit is contained in:
thinkphp
2016-07-19 11:15:05 +08:00
parent 2f43df50ba
commit b6c81b2b78
2 changed files with 7 additions and 6 deletions

View File

@@ -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);
}

View File

@@ -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);