Контейнер
класс Container реализует ResettableContainerInterface
Контейнер — это контейнер инъекции зависимостей.
Он предоставляет доступ к экземплярам объектов (сервисов).
Сервисы и параметры — это простые хранилища ключ/пара.
Ключи параметров и сервисов нечувствительны к регистру.
Идентификатор сервиса может содержать строчные буквы, цифры, символы подчеркивания и точки. Символы подчеркивания используются для разделения слов, а точки — для группировки сервисов в пространства имен:
- запрос
- mysql_хранилище_сессий
- symfony.mysql_хранилище_сессий
Сервис также можно определить, создав метод с именем getXXXService(), где XXX — это верблюжий регистр идентификатора:
- запрос -> getRequestService()
- mysql_хранилище_сессий -> getMysqlSessionStorageService()
- symfony.mysql_хранилище_сессий -> getSymfony_MysqlSessionStorageService()
У контейнера могут быть три возможных поведения, когда сервис не существует:
- EXCEPTIONONINVALID_REFERENCE: Выбрасывает исключение (по умолчанию)
- NULLONINVALID_REFERENCE: Возвращает null
- IGNOREONINVALID_REFERENCE: Игнорирует команду обертывания, запрашивающую ссылку (например, игнорирует установщик, если сервис не существует)
Методы
| __construct(ParameterBagInterface $parameterBag = null) Конструктор. | ||
| compile() Компилирует контейнер. | ||
| bool | isFrozen() Возвращает true, если пакет параметров контейнера заморожен. | |
| ParameterBagInterface | getParameterBag() Получает пакет параметров контейнера сервисов. | |
| 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()
Компилирует контейнер.
Этот метод выполняет два действия:
- Значения параметров разрешаются;
- Пакет параметров замораживается.
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)
Устанавливает сервис.
Установление сервиса в значение 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 | Если сервис не определен |
| Exception | если при решении возникло исключение |
См. также
| Ссылка |
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.0/Symfony/Component/DependencyInjection/Container.html