Контейнер
класс Container реализует ResettableContainerInterface
Контейнер — это контейнер инъекции зависимостей.
Он предоставляет доступ к экземплярам объектов (сервисов).
Сервисы и параметры — это простые хранилища ключ/пара.
Ключи параметров и сервисов нечувствительны к регистру.
Сервис также может быть определён путём создания метода с именем getXXXService(), где XXX — это версионированный ID:
- 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, если контейнер параметра bag заморожен. | |
| ParameterBagInterface | getParameterBag() Получает параметр bag контейнера сервисов. | |
| mixed | getParameter(string $name) Получает параметр. | |
| bool | hasParameter(string $name) Проверяет существование параметра. | |
| setParameter(string $name, mixed $value) Устанавливает параметр. | ||
| set(string $id, object $service) Устанавливает сервис. | ||
| bool | has(string $id) Возвращает true, если данный сервис определён. | |
| object | get(string $id, int $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE) Получает сервис. | |
| bool | initialized(string $id) Возвращает true, если данный сервис фактически был инициализирован. | |
| reset() Сбрасывает общие сервисы из контейнера. | ||
| array | getServiceIds() Получает все идентификаторы сервисов. | |
| static string | camelize(string $id) Преобразует строку в верблюжью нотацию. | |
| static string | underscore(string $id) Преобразует строку в нижний регистр с подчёркиванием. |
Подробности
__construct(ParameterBagInterface $parameterBag = null)
Параметры
| ParameterBagInterface | $parameterBag | Экземпляр ParameterBagInterface |
compile()
Компилирует контейнер.
Этот метод делает две вещи:
- Значения параметров разрешаются;
- Параметр bag замораживается.
bool isFrozen()
Возвращает true, если контейнер параметра bag заморожен.
Возвращаемое значение
| bool | true, если контейнер параметра bag заморожен, иначе false |
ParameterBagInterface getParameterBag()
Получает параметр bag контейнера сервисов.
Возвращаемое значение
| 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)
Устанавливает сервис.
Установка сервиса в null сбрасывает сервис: has() возвращает false, и get() ведет себя так же, как если бы сервис никогда не был создан.
Параметры
| string | $id | Идентификатор сервиса |
| object | $service | Экземпляр сервиса |
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(), то первый имеет приоритет.
Параметры
| string | $id | Идентификатор сервиса |
| int | $invalidBehavior | Поведение при отсутствии сервиса |
Возвращаемое значение
| object | Связанный сервис |
Исключения
| ServiceCircularReferenceException | При обнаружении циклической ссылки |
| ServiceNotFoundException | Когда сервис не определён |
| Исключение | Если при разрешении сервиса было выброшено исключение |
См. также
| Ссылка |
bool initialized(string $id)
Возвращает true, если данный сервис фактически был инициализирован.
Параметры
| string | $id |
Возвращаемое значение
| bool | true, если сервис был инициализирован, иначе false |
reset()
Сбрасывает общие сервисы из контейнера.
Контейнер не предназначен для повторного использования после сброса в обычном рабочем процессе. Этот метод предназначен для высвобождения ссылок для подсчета ссылок. Последующий вызов ContainerInterface::get приведет к созданию нового экземпляра общего сервиса.
array getServiceIds()
Получает все идентификаторы сервисов.
Возвращаемое значение
| array | Массив всех определённых идентификаторов сервисов |
static string camelize(string $id)
Преобразует строку в верблюжью нотацию.
Параметры
| string | $id | Строка для преобразования |
Возвращаемое значение
| string | Преобразованная строка |
static string underscore(string $id)
Преобразует строку в нижний регистр с подчёркиванием.
Параметры
| string | $id | Строка для преобразования |
Возвращаемое значение
| string | Преобразованная строка |
© 2004–2017 Fabien Potencier
Licensed under the MIT License.
http://api.symfony.com/3.2/Symfony/Component/DependencyInjection/Container.html