Контейнер
класс Container реализует IntrospectableContainerInterface
Контейнер — это контейнер инъекции зависимостей.
Он предоставляет доступ к экземплярам объектов (сервисов).
Сервисы и параметры — это простые хранилища ключ/значение.
Ключи параметров и сервисов нечувствительны к регистру.
Сервис также может быть определён, путём создания метода с именем getXXXService(), где XXX — пришлизованная версия идентификатора:
- request -> getRequestService()
- mysql_session_storage -> getMysqlSessionStorageService()
- symfony.mysql_session_storage -> getSymfony_MysqlSessionStorageService()
Контейнер может вести себя тремя возможными способами, когда сервис не существует:
- EXCEPTIONONINVALID_REFERENCE: Выбрасывает исключение (по умолчанию)
- NULLONINVALID_REFERENCE: Возвращает null
- IGNOREONINVALID_REFERENCE: Игнорирует команду обертки, запрашивающую ссылку (например, игнорирует setter, если сервис не существует)
Методы
| __construct(ParameterBagInterface $parameterBag = null) | ||
| compile() Компилирует контейнер. | ||
| bool | isFrozen() Возвращает true, если контейнер параметра bag заморожен. | |
| ParameterBagInterface | getParameterBag() Получает пакет параметров контейнера сервиса. | |
| 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, если данный сервис был фактически инициализирован. | |
| array | getServiceIds() Получает все идентификаторы сервисов. | |
| enterScope(string $name) Вызывается при входе в область. | ||
| leaveScope(string $name) Вызывается для выхода из текущей области и возврата к родительской области. | ||
| addScope(ScopeInterface $scope) Добавляет область в контейнер. | ||
| bool | hasScope(string $name) Возвращает, есть ли у этого контейнера определенная область. | |
| bool | isScopeActive(string $name) Возвращает, активна ли эта область в данный момент. | |
| static string | camelize(string $id) Преобразует строку в camelized формат. | |
| static string | underscore(string $id) Преобразует строку в underscore формат. |
Подробности
__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() ведет себя так же, как если бы сервис никогда не создавался.
Параметры
| string | $id | Идентификатор сервиса |
| object | $service | Экземпляр сервиса |
| string | $scope | Область действия сервиса |
Исключения
| RuntimeException | При попытке установить сервис в неактивной области |
| InvalidArgumentException | При попытке установить сервис в области типа prototype |
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 | Если сервис не определён |
| Exception | если при разрешении сервиса было выброшено исключение |
См. также
| Ссылка |
bool initialized(string $id)
Возвращает true, если данный сервис был инициализирован.
Параметры
| string | $id |
Значение возврата
| bool | true, если сервис был инициализирован, иначе false |
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 | Строка для преобразования |
Значение возврата
| string | Преобразованная строка |
© 2004–2017 Fabien Potencier
Licensed under the MIT License.
http://api.symfony.com/2.7/Symfony/Component/DependencyInjection/Container.html