Squeak.ru - шаблоны программирования

Как работает PHP-DI Symfony Bridge и как его правильно настроить?

У меня есть некоторые проблемы при работе с комбинацией PHP-DI 6 и Symfony 4. Поэтому я хотел бы получить более глубокое понимание того, как это работает / должно работать, и проверить, действительно ли я правильно настроил это.

Symfony по умолчанию использует свой собственный контейнер внедрения зависимостей, symfony/dependency-injection. В App\Kernel есть метод-ловушка configureContainer(...). В этом методе можно настроить DIC. Еще одним местом для конфигурации DIC является файл services.yaml.

Теперь я устанавливаю php-di/php-di и php-di/symfony-bridge и настраиваю их в App\Kernel#buildPHPDIContainer(...), как в В документе PHP-DI поясняется:

/*
Cannot use ContainerBuilder as in the PHP-DI docu,
since its already in use by the AppKernel\configureContainer(...).
*/
use DI\ContainerBuilder as PhpDiContainerBuilder;
class AppKernel extends \DI\Bridge\Symfony\Kernel
{
    // ...
    protected function buildPHPDIContainer(PhpDiContainerBuilder $builder)
    {
        $builder->addDefinitions('/path/to/file/returning/definitions/array.php');
        return $builder->build();
    }
}

Теоретическая часть:

Что происходит/должно происходить после него? Symfony DIC становится неактивным? Если нет, означает ли это, что приложение одновременно использует два DIC? Имеет ли смысл отключать DIC Symfony?

В общем: какова идея/подход PHP-DI Symfony Bridge -- заменить DIC фреймворка или интегрировать себя в него?

Практическая часть:

Выше я описал шаги настройки, чтобы заставить PHP-DI работать с Symfony. Есть ли что-то еще? Например. должен ли AppKernel\configureContainer(...) оставаться как есть или он должен стать прокси для AppKernel\buildPHPDIContainer(...) PHP-DI? Следует ли удалить services.yaml?


Ответы:


1

Что происходит/должно происходить после него?

Какова идея / подход PHP-DI Symfony Bridge - заменить DIC фреймворка или интегрироваться в него?

Контейнер SymfonyContainerBridge заменяет контейнер Symfony. Этот мост является прокси как для PHP-DI, так и для Symfony DI: если запись найдена в контейнере DI Symfony, он возвращает ее, в противном случае он ищет внутри PHP-DI.

Symfony DIC становится неактивным?

No.

Если нет, означает ли это, что приложение одновременно использует два DIC?

Да.

Имеет ли смысл отключать DIC Symfony?

Не совсем, потому что многие вещи в Symfony работают только благодаря конфигурации контейнера DI Symfony.

Есть ли что-то еще?

Если вы выполнили шаги, описанные в документации, больше ничего делать не нужно.

Что касается вашего другого вопроса, я вчера опубликовал ответ.

20.03.2018
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...