Fix #20332: Added support for the '__class' key in \yii\di\Instance:eunsure(['__class' => ...])

This commit is contained in:
Alex
2025-02-27 17:32:44 +03:00
committed by GitHub
parent 53ce35423e
commit dbb82a25a2
3 changed files with 11 additions and 2 deletions

View File

@ -118,11 +118,18 @@ class Instance
public static function ensure($reference, $type = null, $container = null)
{
if (is_array($reference)) {
$class = isset($reference['class']) ? $reference['class'] : $type;
if (!$container instanceof Container) {
$container = Yii::$container;
}
unset($reference['class']);
if (isset($reference['__class'])) {
$class = $reference['__class'];
unset($reference['__class'], $type['class']);
} elseif (isset($reference['class'])) {
$class = $reference['class'];
unset($reference['class']);
} else {
$class = $type;
}
$component = $container->get($class, [], $reference);
if ($type === null || $component instanceof $type) {
return $component;