invokeClass() public static method

调用反射执行类的实例化 支持依赖注入
public static invokeClass ( string $class, array $vars = [] ) : mixed
$class string 类名
$vars array 变量
return mixed
Ejemplo n.º 1
0
 /**
  * 实例化(分层)控制器 格式:[模块名/]控制器名
  * @param string $name         资源地址
  * @param string $layer        控制层名称
  * @param bool   $appendSuffix 是否添加类名后缀
  * @param string $empty        空控制器名称
  * @return Object|false
  * @throws ClassNotFoundException
  */
 public static function controller($name, $layer = 'controller', $appendSuffix = false, $empty = '')
 {
     if (strpos($name, '/')) {
         list($module, $name) = explode('/', $name);
     } else {
         $module = Request::instance()->module();
     }
     $class = self::parseClass($module, $layer, $name, $appendSuffix);
     if (class_exists($class)) {
         return App::invokeClass($class);
     } elseif ($empty && class_exists($emptyClass = self::parseClass($module, $layer, $empty, $appendSuffix))) {
         return new $emptyClass(Request::instance());
     }
 }