Контейнер
класс Container реализует IntrospectableContainerInterface, ResettableContainerInterface
Контейнер - это контейнер внедрения зависимостей.
Он предоставляет доступ к экземплярам объектов (сервисов).
Сервисы и параметры - это простые хранилища ключ/значение.
Ключи параметров и сервисов нечувствительны к регистру.
Сервис также может быть определен путем создания метода с именем getXXXService(), где XXX - это камелизированная версия идентификатора:
- request -> getRequestService()
- mysql_session_storage -> getMysqlSessionStorageService()
- symfony.mysql_session_storage -> getSymfony_MysqlSessionStorageService()
Контейнер может иметь три возможных поведения, когда сервис не существует:
- EXCEPTIONONINVALID_REFERENCE: Выбрасывает исключение (по умолчанию)
- NULLONINVALID_REFERENCE: Возвращает null
- IGNOREONINVALID_REFERENCE: Игнорирует команду обращения к ссылке (например, игнорирует установщик, если сервис не существует)
Методы
| __construct(ParameterBagInterface $parameterBag = null) | ||
| compile() Компилирует контейнер. | ||
| bool | isFrozen() Возвращает true, если контейнер parameter bag заморожен. | |
| ParameterBagInterface | getParameterBag() Получает параметр bag контейнера сервисов. | |
| mixed | getParameter(string $name) Получает параметр. | |
| bool | hasParameter(string $name) Проверяет, существует ли параметр. | |
| setParameter(string $name, mixed $value) Устанавливает параметр. | ||
| set(string $id, object $service, string $scope = self::SCOPE_CONTAINER) Устанавливает сервис. | ||
| bool | has(string $id) Возвращает true, если заданный сервис определен. | |
| object | get(string $id, int $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE) Получает сервис. | |
| bool | initialized(string $id) Возвращает true, если заданный сервис был фактически инициализирован. | |
| reset() Сбрасывает общие сервисы из контейнера. | ||
| array | getServiceIds() Получает все идентификаторы сервисов. | |
| enterScope(string $name) deprecated Вызывается при входе в область. | ||
| leaveScope(string $name) deprecated Вызывается для выхода из текущей области и возврата в родительскую область. | ||
| addScope(ScopeInterface $scope) deprecated Добавляет область в контейнер. | ||
| bool | hasScope(string $name) deprecated Возвращает, есть ли в этом контейнере определенная область. | |
| bool | isScopeActive(string $name) deprecated Возвращает, активна ли эта область в данный момент. | |
| static string | camelize(string $id) Преобразует строку в камелообразный стиль. | |
| static string | underscore(string $id) Преобразует строку в нижнее подчеркивание. |
Подробности
__construct(ParameterBagInterface $parameterBag = null)
Параметры
| ParameterBagInterface | $parameterBag |
compile()
Компилирует контейнер.
Этот метод выполняет два действия:
- Значения параметров разрешаются;
- Набор параметров замораживается.
bool isFrozen()
Возвращает true, если набор параметров контейнера заморожен.
Значение возврата
| bool | true, если набор параметров контейнера заморожен, иначе false |
ParameterBagInterface getParameterBag()
Получает набор параметров контейнера сервисов.
Значение возврата
| ParameterBagInterface | Экземпляр ParameterBagInterface |
mixed getParameter(string $name)
Получает параметр.
Параметры
| string | $name | Имя параметра |
Значение возврата
| mixed | Значение параметра |
Исключения
| InvalidArgumentException | если параметр не определен |
bool hasParameter(string $name)
Проверяет, существует ли параметр.
Параметры
| string | $name | Имя параметра |
Значение возврата
| bool | Присутствует ли параметр в контейнере |
setParameter(string $name, mixed $value)
Устанавливает параметр.
Параметры
| string | $name | Имя параметра |
| mixed | $value | Значение параметра |
set(string $id, object $service, string $scope = self::SCOPE_CONTAINER)
Устанавливает сервис.
Установка сервиса в значение null сбрасывает сервис: has() возвращает false, а get() ведет себя так же, как если бы сервис никогда не создавался.
Примечание: Параметр $scope устарел с версии 2.8 и будет удален в версии 3.0.
Параметры
| string | $id | Идентификатор сервиса |
| object | $service | Экземпляр сервиса |
| string | $scope | Область видимости сервиса |
Исключения
| RuntimeException | При попытке установить сервис в неактивной области видимости |
| InvalidArgumentException | При попытке установить сервис в области видимости прототипа |
bool has(string $id)
Возвращает true, если задан данный сервис.
Параметры
| string | $id | Идентификатор сервиса |
Значение возврата
| bool | true, если сервис определен, иначе false |
object get(string $id, int $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE)
Получает сервис.
Если сервис определен как через метод set(), так и через метод get{$id}Service(), то метод set() имеет приоритет.
Параметры
| string | $id | Идентификатор сервиса |
| int | $invalidBehavior | Поведение при отсутствии сервиса |
Значение возврата
| object | Соответствующий сервис |
Исключения
| ServiceCircularReferenceException | При обнаружении циклической ссылки |
| ServiceNotFoundException | Если сервис не определен |
| Exception | Если при разрешении сервиса было выброшено исключение |
См. также
| Ссылка |
bool initialized(string $id)
Возвращает true, если данный сервис был фактически инициализирован.
Параметры
| string | $id |
Значение возврата
| bool | true, если сервис был инициализирован, иначе false |
reset()
Сбрасывает общие сервисы из контейнера.
Не предполагается, что контейнер будет использоваться повторно после сброса в обычном рабочем процессе. Этот метод предназначен для освобождения ссылок для подсчета ссылок. Последующий вызов ContainerInterface::get приведет к созданию нового экземпляра общего сервиса.
array getServiceIds()
Получает все идентификаторы сервисов.
Значение возврата
| array | Массив всех определенных идентификаторов сервисов |
enterScope(string $name) устарело
устарело
Вызывается при входе в область видимости.
Параметры
| string | $name |
Исключения
| RuntimeException | При неактивной родительской области видимости |
| InvalidArgumentException | Если область видимости не существует |
leaveScope(string $name) устарело
устарело
Вызывается для выхода из текущей области видимости и возвращения к родительской области видимости.
Параметры
| string | $name |
Исключения
| InvalidArgumentException | если область видимости не активна |
addScope(ScopeInterface $scope) устарело
устарело
Добавляет область видимости в контейнер.
Параметры
| ScopeInterface | $scope |
Исключения
| InvalidArgumentException |
bool hasScope(string $name) устарело
устарело
Возвращает, имеет ли этот контейнер определённую область видимости.
Параметры
| string | $name |
Значение возврата
| bool |
bool isScopeActive(string $name) устарело
устарело
Возвращает, активна ли текущая область видимости.
Это не проверяет, действительно ли передаваемая область видимости существует.
Параметры
| string | $name |
Значение возврата
| bool |
static string camelize(string $id)
Преобразует строку в верблюжью нотацию.
Параметры
| string | $id | Строка для преобразования |
Значение возврата
| string | Преобразованная строка |
static string underscore(string $id)
Преобразует строку в нижний регистр с подчёркиваниями.
Параметры
| string | $id | Строка для преобразования |
Значение возврата
| строка | Подчёркнутая строка |
© 2004–2017 Fabien Potencier
Licensed under the MIT License.
http://api.symfony.com/2.8/Symfony/Component/DependencyInjection/Container.html