Класс yii\di\ServiceLocator
| Наследование | yii\di\ServiceLocator » yii\base\Component » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable |
| Подклассы | yii\base\Application, yii\base\Module, yii\console\Application, yii\debug\Module, yii\gii\Module, yii\web\Application |
| Доступна с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/di/ServiceLocator.php |
ServiceLocator реализует шаблон локатора сервисов.
Для использования ServiceLocator, необходимо сначала зарегистрировать идентификаторы компонентов с соответствующими определениями компонентов с помощью метода set() или setComponents(). Затем можно вызвать метод get() для получения компонента с указанным идентификатором. Локатор автоматически инициализирует и настраивает компонент в соответствии с определением.
Например,
$locator = new \yii\di\ServiceLocator;
$locator->setComponents([
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'sqlite:path/to/file.db',
],
'cache' => [
'class' => 'yii\caching\DbCache',
'db' => 'db',
],
]);
$db = $locator->get('db'); // or $locator->db
$cache = $locator->get('cache'); // or $locator->cache
Поскольку yii\base\Module расширяет ServiceLocator, модули и приложение также являются локаторами сервисов.
Более подробную информацию и инструкции по использованию ServiceLocator см. в статье руководства о локаторах сервисов.
Публичные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $behaviors | yii\base\Behavior[] | Список поведений, прикреплённых к этому компоненту | yii\base\Component |
| $components | массив | Список определений компонентов или загруженных экземпляров компонентов (ID => определение или экземпляр). | yii\di\ServiceLocator |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | yii\base\Component |
| __clone() | Этот метод вызывается после создания объекта путём клонирования существующего. | yii\base\Component |
| __construct() | Конструктор. | yii\base\Object |
| __get() | Магический метод-геттер. | yii\di\ServiceLocator |
| __isset() | Проверяет, является ли значение свойства равным null. | yii\di\ServiceLocator |
| __set() | Устанавливает значение свойства компонента. | yii\base\Component |
| __unset() | Устанавливает свойство компонента в null. | yii\base\Component |
| attachBehavior() | Прикрепляет поведение к этому компоненту. | yii\base\Component |
| attachBehaviors() | Прикрепляет список поведений к компоненту. | yii\base\Component |
| behaviors() | Возвращает список поведений, которые должен иметь этот компонент. | yii\base\Component |
| canGetProperty() | Возвращает значение, указывающее, можно ли считать свойство. | yii\base\Component |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Component |
| className() | Возвращает полное имя этого класса. | yii\base\Object |
| clear() | Удаляет компонент из локатора. | yii\di\ServiceLocator |
| detachBehavior() | Открепляет поведение от компонента. | yii\base\Component |
| detachBehaviors() | Открепляет все поведения от компонента. | yii\base\Component |
| ensureBehaviors() | Убеждается, что поведения, объявленные в behaviors(), прикреплены к этому компоненту. | yii\base\Component |
| get() | Возвращает экземпляр компонента с указанным идентификатором. | yii\di\ServiceLocator |
| getBehavior() | Возвращает объект поведения с указанным именем. | yii\base\Component |
| getBehaviors() | Возвращает все прикреплённые к этому компоненту поведения. | yii\base\Component |
| getComponents() | Возвращает список определений компонентов или загруженных экземпляров компонентов. | yii\di\ServiceLocator |
| has() | Возвращает значение, указывающее, содержит ли локатор указанное определение компонента или уже инициализировал компонент. | yii\di\ServiceLocator |
| hasEventHandlers() | Возвращает значение, указывающее, есть ли обработчик, прикрепленный к указанному событию. | yii\base\Component |
| hasMethod() | Возвращает значение, указывающее, определён ли метод. | yii\base\Component |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство для этого компонента. | yii\base\Component |
| init() | Инициализирует объект. | yii\base\Object |
| off() | Открепляет существующий обработчик событий от этого компонента. | yii\base\Component |
| on() | Прикрепляет обработчик событий к событию. | yii\base\Component |
| set() | Регистрирует определение компонента в этом локаторе. | yii\di\ServiceLocator |
| setComponents() | Регистрирует набор определений компонентов в этом локаторе. | yii\di\ServiceLocator |
| trigger() | Вызывает событие. | yii\base\Component |
Подробное описание свойств
$components public property
Список определений компонентов или загруженных экземпляров компонентов (ID => определение или экземпляр).
public array getComponents ( $returnDefinitions = true )
public void setComponents ( $components )
Подробное описание методов
__get() общедоступный метод
Магический метод-геттер.
Этот метод переопределён для поддержки доступа к компонентам, например, чтения свойств.
| общедоступный смешанный __get ( $name ) | ||
|---|---|---|
| $name | строка |
Имя компонента или свойства |
| return | смешанный |
Значение указанного свойства |
__isset() общедоступный метод
Проверяет, является ли значение свойства нулевым.
Этот метод переопределяет реализацию родительского класса, проверяя, загружен ли указанный компонент.
| общедоступный булево __isset ( $name ) | ||
|---|---|---|
| $name | строка |
Имя свойства или имя события |
| return | булево |
Является ли значение свойства нулевым |
clear() общедоступный метод
Удаляет компонент из локетора.
| общедоступный void clear ( $id ) | ||
|---|---|---|
| $id | строка |
Идентификатор компонента |
get() общедоступный метод
Возвращает экземпляр компонента с заданным идентификатором.
См. также:
| общедоступный объект|null get ( $id, $throwException = true ) | ||
|---|---|---|
| $id | строка |
Идентификатор компонента (например, |
| $throwException | булево |
Вызывать ли исключение, если |
| return | объект|null |
Компонент с указанным идентификатором. Если |
| throws | yii\base\InvalidConfigException |
если |
getComponents() общедоступный метод
Возвращает список определений компонентов или загруженных экземпляров компонентов.
| общедоступный массив getComponents ( $returnDefinitions = true ) | ||
|---|---|---|
| $returnDefinitions | булево |
Возвращать определения компонентов вместо загруженных экземпляров компонентов. |
| return | массив |
Список определений компонентов или загруженных экземпляров компонентов (ID => определение или экземпляр). |
has() общедоступный метод
Возвращает значение, указывающее, содержит ли локетор указанное определение компонента или был ли компонент инициализирован.
Этот метод может возвращать разные результаты в зависимости от значения $checkInstance.
- Если
$checkInstanceравно false (по умолчанию), метод вернёт значение, указывающее, содержит ли локетор указанное определение компонента. - Если
$checkInstanceравно true, метод вернёт значение, указывающее, инициализирован ли локетором указанный компонент.
См. также set().
| общедоступный булево has ( $id, $checkInstance = false ) | ||
|---|---|---|
| $id | строка |
Идентификатор компонента (например, |
| $checkInstance | булево |
Проверять ли, является ли компонент общим и инициализированным. |
| return | булево |
Содержит ли локетор указанное определение компонента или инициализирован ли компонент. |
set() общедоступный метод
Регистрирует определение компонента в этом локеторе.
Например,
// a class name
$locator->set('cache', 'yii\caching\FileCache');
// a configuration array
$locator->set('db', [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=127.0.0.1;dbname=demo',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
]);
// an anonymous function
$locator->set('cache', function ($params) {
return new \yii\caching\FileCache;
});
// an instance
$locator->set('cache', new \yii\caching\FileCache);
Если определение компонента с тем же ID уже существует, оно будет перезаписано.
| общедоступный void set ( $id, $definition ) | ||
|---|---|---|
| $id | строка |
Идентификатор компонента (например, |
| $definition | смешанный |
Определение компонента для регистрации в этом локеторе. Может быть одним из следующих:
|
| throws | yii\base\InvalidConfigException |
если определение является недопустимым массивом конфигурации |
setComponents() общедоступный метод
Регистрирует набор определений компонентов в этом локеторе.
Это объёмная версия set(). Параметр должен быть массивом, ключами которого являются идентификаторы компонентов, а значениями — соответствующие определения компонентов.
Подробнее о том, как указать идентификаторы и определения компонентов, см. set().
Если определение компонента с тем же ID уже существует, оно будет перезаписано.
Ниже приведён пример регистрации двух определений компонентов:
[
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'sqlite:path/to/file.db',
],
'cache' => [
'class' => 'yii\caching\DbCache',
'db' => 'db',
],
]
| общедоступный void setComponents ( $components ) | ||
|---|---|---|
| $components | массив |
Определения или экземпляры компонентов |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-di-servicelocator.html