Класс yii\di\Instance
| Наследование | yii\di\Instance |
|---|---|
| Доступна с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/di/Instance.php |
Instance представляет ссылку на именованный объект в контейнере инъекции зависимостей (DI) или локаторе сервисов.
Вы можете использовать get() для получения фактического объекта, на который ссылается $id.
Класс Instance используется в основном в двух случаях:
- При конфигурировании контейнера инъекции зависимостей, вы используете Instance для ссылки на имя класса, имя интерфейса или псевдоним. Ссылка может быть позже разрешена в фактический объект контейнером.
- В классах, которые используют локатор сервисов для получения зависимых объектов.
Следующий пример демонстрирует, как настроить контейнер DI с Instance:
$container = new \yii\di\Container;
$container->set('cache', [
'class' => 'yii\caching\DbCache',
'db' => Instance::of('db')
]);
$container->set('db', [
'class' => 'yii\db\Connection',
'dsn' => 'sqlite:path/to/file.db',
]);
И следующий пример показывает, как класс получает компонент из локатора сервисов:
class DbCache extends Cache
{
public $db = 'db';
public function init()
{
parent::init();
$this->db = Instance::ensure($this->db, 'yii\db\Connection');
}
}
Общедоступные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $id | string | Идентификатор компонента, имя класса, имя интерфейса или псевдоним | yii\di\Instance |
Общедоступные методы
| Метод | Описание | Определено в |
|---|---|---|
| __set_state() | Восстанавливает состояние класса после использования var_export() |
yii\di\Instance |
| ensure() | Разрешает указанную ссылку в фактический объект и гарантирует, что он имеет указанный тип. | yii\di\Instance |
| get() | Возвращает фактический объект, на который ссылается этот объект Instance. | yii\di\Instance |
| of() | Создаёт новый объект Instance. | yii\di\Instance |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| __construct() | Конструктор. | yii\di\Instance |
Подробности свойств
$id общедоступное свойство
Идентификатор компонента, имя класса, имя интерфейса или псевдоним
public string $id = null
Подробности методов
__construct() защищенный метод
Конструктор.
| protected void __construct ( $id ) | ||
|---|---|---|
| $id | string |
Идентификатор компонента |
__set_state() общедоступный статический метод (доступен с версии 2.0.12)
Восстанавливает состояние класса после использования var_export()
См. также \yii\di\var_export().
| public static yii\di\Instance __set_state ( $state ) | ||
|---|---|---|
| $state | array | |
| throws | yii\base\InvalidConfigException |
если свойство $state не содержит |
ensure() общедоступный статический метод
Разрешает указанную ссылку в фактический объект и гарантирует, что он имеет указанный тип.
Ссылка может быть указана как строка или объект Instance. Если строка, она будет обработана как идентификатор компонента, имя класса/интерфейса или псевдоним, в зависимости от типа контейнера.
Если вы не укажете контейнер, метод сначала попробует Yii::$app а затем Yii::$container.
Например,
use yii\db\Connection;
// returns Yii::$app->db
$db = Instance::ensure('db', Connection::className());
// returns an instance of Connection using the given configuration
$db = Instance::ensure(['dsn' => 'sqlite:path/to/my.db'], Connection::className());
| public static object ensure ( $reference, $type = null, $container = null ) | ||
|---|---|---|
| $reference | object|string|array|static |
Объект или ссылка на желаемый объект. Вы можете указать ссылку в виде идентификатора компонента или объекта Instance. Начиная с версии 2.0.2, вы также можете передать массив конфигурации для создания объекта. Если значение "class" не указано в массиве конфигурации, оно будет использовать значение |
| $type | string |
Имя класса/интерфейса для проверки. Если null, проверка типа не будет выполнена. |
| $container | yii\di\ServiceLocator|yii\di\Container |
Контейнер. Это будет передано в get(). |
| return | object |
Объект, на который ссылается Instance, или сам |
| throws | yii\base\InvalidConfigException |
если ссылка недействительна |
get() общедоступный метод
Возвращает фактический объект, на который ссылается этот объект Instance.
| public object get ( $container = null ) | ||
|---|---|---|
| $container | yii\di\ServiceLocator|yii\di\Container |
Контейнер, используемый для поиска объекта. Если null, метод сначала попробует |
| return | object |
Фактический объект, на который ссылается этот объект Instance. |
of() общедоступный статический метод
Создаёт новый объект Instance.
| public static yii\di\Instance of ( $id ) | ||
|---|---|---|
| $id | string |
Идентификатор компонента |
| return | yii\di\Instance |
Новый объект Instance. |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-di-instance.html