mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-02 21:41:19 +08:00
Fix #20332: Added support for the '__class' key in \yii\di\Instance:eunsure(['__class' => ...])
This commit is contained in:
@ -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;
|
||||
|
||||
Reference in New Issue
Block a user