Spec-Zone.ru › Yii 2.0

Класс 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() общедоступный метод

Возвращает экземпляр компонента с заданным идентификатором.

См. также:

  • has()
  • set()
общедоступный объект|null get ( $id, $throwException = true )
$id строка

Идентификатор компонента (например, db).

$throwException булево

Вызывать ли исключение, если $id не зарегистрирован в локеторе ранее.

return объект|null

Компонент с указанным идентификатором. Если $throwException равно false и $id не был зарегистрирован ранее, возвращается null.

throws yii\base\InvalidConfigException

если $id ссылается на несуществующий идентификатор компонента

getComponents() общедоступный метод

Возвращает список определений компонентов или загруженных экземпляров компонентов.

общедоступный массив getComponents ( $returnDefinitions = true )
$returnDefinitions булево

Возвращать определения компонентов вместо загруженных экземпляров компонентов.

return массив

Список определений компонентов или загруженных экземпляров компонентов (ID => определение или экземпляр).

has() общедоступный метод

Возвращает значение, указывающее, содержит ли локетор указанное определение компонента или был ли компонент инициализирован.

Этот метод может возвращать разные результаты в зависимости от значения $checkInstance.

  • Если $checkInstance равно false (по умолчанию), метод вернёт значение, указывающее, содержит ли локетор указанное определение компонента.
  • Если $checkInstance равно true, метод вернёт значение, указывающее, инициализирован ли локетором указанный компонент.

См. также set().

общедоступный булево has ( $id, $checkInstance = false )
$id строка

Идентификатор компонента (например, db).

$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 строка

Идентификатор компонента (например, db).

$definition смешанный

Определение компонента для регистрации в этом локеторе. Может быть одним из следующих:

  • имя класса
  • массив конфигурации: массив содержит пары имя-значение, которые будут использоваться для инициализации значений свойств вновь созданного объекта при вызове get(). Элемент class обязателен и указывает на класс создаваемого объекта.
  • вызов PHP: либо анонимная функция, либо массив, представляющий метод класса (например, ['Foo', 'bar']). Вызов будет вызван методом get() для возврата объекта, связанного с указанным идентификатором компонента.
  • объект: при вызове get() будет возвращён этот объект.
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API