改进Rest控制器

This commit is contained in:
thinkphp
2016-07-19 11:29:13 +08:00
parent b6c81b2b78
commit 382e6a1f29
2 changed files with 4 additions and 5 deletions

View File

@@ -338,8 +338,7 @@ class App
// 操作不存在
if (method_exists($instance, '_empty')) {
$reflect = new \ReflectionMethod($instance, '_empty');
$args = self::bindParams($reflect, Request::instance()->param());
$data = $reflect->invokeArgs($instance, [$action, $args]);
$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);

View File

@@ -11,6 +11,7 @@
namespace think\controller;
use think\App;
use think\Request;
use think\Response;
@@ -61,11 +62,10 @@ abstract class Rest
* REST 调用
* @access public
* @param string $method 方法名
* @param array $args 参数
* @return mixed
* @throws \Exception
*/
public function _empty($method, $args)
public function _empty($method)
{
if (method_exists($this, $method . '_' . $this->method . '_' . $this->type)) {
// RESTFul方法支持
@@ -76,7 +76,7 @@ abstract class Rest
$fun = $method . '_' . $this->method;
}
if (isset($fun)) {
return call_user_func_array([$this, $fun], $args);
return App::invokeMethod([$this, $fun]);
} else {
// 抛出异常
throw new \Exception('error action :' . $method);