/php-di

Primary LanguagePHP

DependencyInjection

Перекрываемые контейнеры сервисов

Типы сервисов:

  1. Общий сервис
  2. Фабричная ссылка (при каждом вызове инстанциируется новый объект)

Способы получения сервисов:

Возможные компоновки:

  1. Реализация Очереди контейнеров, с возможностью вклинивать свой контейнер в эту очередь по приоритету.
  2. Контейнер с переопределением по наследуемости от родительского контейнера

  1. Вызов из упорядоченной цепочки: Требует формироания специальной цепочки Способ может быть необходим если ссылка на локатор-сервисов должна быть постоянна

     service call(service4) -> DI_CHAIN[order: DI1,DI2,DI3,DI4]
     -------------------------------------
     -> DI4
         -service1
         -service2
     -> DI3
         -service1
     -> DI2
         -service1
         -service2
         -service4 <==== called-here ====
     -> DI1
         -service2
         -service3
         -service4
     --------------------------------------
    
  2. Вызов из наследуемого контейнера: При перекрытии с помощью вложенности,нужно контролировать ссылки на конечный контейнер(самый глубокий)

     service call(service4)
     -> DI4
         -service1
         -service2
             -> DI3
                 -service1
                     -> DI2
                         -service1
                         -service2
                         -service4 <==== called-here ====
                             -> DI1
                                 -service2
                                 -service3
                                 -service4