diff --git a/StubsController.php b/StubsController.php index 6c5753c..643c75b 100644 --- a/StubsController.php +++ b/StubsController.php @@ -78,20 +78,35 @@ public function actionIndex() continue; } - foreach ($config['components'] as $name => $component) { - if (is_string($component)) { - $component = ['class' => $component]; + foreach ($config['components'] as $name => $definition) { + + if (is_string($definition)) { + $class = $definition; + } else { + + if (is_callable($definition, true)) { + try{ + $definition = \Yii::$app->get($name, false); + } catch(\Exception $exception){ + continue; + } + } + if (is_object($definition) && !$definition instanceof Closure) { + $class = get_class($definition); + } else if (is_array($definition)) { + + if ($name === 'user' && isset($definition['identityClass'])) { + $userIdentities[] = $definition['identityClass']; + } + + if(isset($definition['class'])){ + $class = $definition['class']; + } else { + continue; + } + } } - - if ($name === 'user' && isset($component['identityClass'])) { - $userIdentities[] = $component['identityClass']; - } - - if (!isset($component['class'])) { - continue; - } - - $components[$name][] = $component['class']; + $components[$name][] = $class; } }