Hook类的行为添加支持 对象和方法

This commit is contained in:
thinkphp
2016-05-20 16:43:34 +08:00
parent 34c80c1116
commit 5f053e4aa7
2 changed files with 11 additions and 5 deletions

View File

@@ -114,7 +114,7 @@ class Hook
/** /**
* 执行某个行为 * 执行某个行为
* @param string $class 行为类名称 * @param mixed $class 要执行的行为
* @param string $tag 方法名(标签名) * @param string $tag 方法名(标签名)
* @param Mixed $params 传人的参数 * @param Mixed $params 传人的参数
* @return mixed * @return mixed
@@ -122,9 +122,15 @@ class Hook
public static function exec($class, $tag = '', &$params = null) public static function exec($class, $tag = '', &$params = null)
{ {
if ($class instanceof \Closure) { if ($class instanceof \Closure) {
return $class($params); $result = call_user_func_array($class, $params);
} elseif (is_object($class)) {
$result = call_user_func_array([$class, $tag], $params);
} elseif (is_array($class)) {
$result = call_user_func_array($class, $params);
} else {
$obj = new $class();
$result = ($tag && is_callable([$obj, $tag])) ? $obj->$tag($params) : $obj->run($params);
} }
$obj = new $class(); return $result;
return ($tag && is_callable([$obj, $tag])) ? $obj->$tag($params) : $obj->run($params);
} }
} }

View File

@@ -42,7 +42,7 @@ class Request
protected $baseFile; protected $baseFile;
/** /**
* @var string 根目录 * @var string 访问的ROOT地址
*/ */
protected $root; protected $root;