mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-08 07:32:48 +08:00
支持控制器的架构方法依赖注入
This commit is contained in:
@@ -221,11 +221,32 @@ class App
|
|||||||
$reflect = new \ReflectionMethod($method);
|
$reflect = new \ReflectionMethod($method);
|
||||||
}
|
}
|
||||||
$args = self::bindParams($reflect, $vars);
|
$args = self::bindParams($reflect, $vars);
|
||||||
// 记录执行信息
|
|
||||||
self::$debug && Log::record('[ RUN ] ' . $reflect->__toString(), 'info');
|
self::$debug && Log::record('[ RUN ] ' . $reflect->__toString(), 'info');
|
||||||
return $reflect->invokeArgs(isset($class) ? $class : null, $args);
|
return $reflect->invokeArgs(isset($class) ? $class : null, $args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 调用反射执行类的实例化 支持依赖注入
|
||||||
|
* @access public
|
||||||
|
* @param string $class 类名
|
||||||
|
* @param array $vars 变量
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public static function invokeClass($class, $vars = [])
|
||||||
|
{
|
||||||
|
$reflect = new \ReflectionClass($class);
|
||||||
|
$constructor = $reflect->getConstructor();
|
||||||
|
if ($constructor) {
|
||||||
|
$args = self::bindParams($constructor, $vars);
|
||||||
|
} else {
|
||||||
|
$args[] = Request::instance();
|
||||||
|
}
|
||||||
|
|
||||||
|
self::$debug && Log::record('[ RUN ] ' . $reflect->__toString(), 'info');
|
||||||
|
return $reflect->newInstanceArgs($args);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 绑定参数
|
* 绑定参数
|
||||||
* @access public
|
* @access public
|
||||||
|
|||||||
@@ -406,7 +406,7 @@ class Loader
|
|||||||
}
|
}
|
||||||
$class = self::parseClass($module, $layer, $name, $appendSuffix);
|
$class = self::parseClass($module, $layer, $name, $appendSuffix);
|
||||||
if (class_exists($class)) {
|
if (class_exists($class)) {
|
||||||
return new $class(Request::instance());
|
return App::invokeClass($class);
|
||||||
} elseif ($empty && class_exists($emptyClass = self::parseClass($module, $layer, $empty, $appendSuffix))) {
|
} elseif ($empty && class_exists($emptyClass = self::parseClass($module, $layer, $empty, $appendSuffix))) {
|
||||||
return new $emptyClass(Request::instance());
|
return new $emptyClass(Request::instance());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user