У меня есть унаследованное приложение, построенное на старой кастомной среде MVC, от которой я хотел бы со временем отказаться. Эта структура не полагается на один фронт-контроллер, поэтому на большинстве страниц все еще есть выделенные файлы php для вызова уважаемого контроллера, другие - смешанные php / html. Я читал о переносе приложений на symfony с использованием различных методов (https://symfony.com/doc/current/migration.html), но у меня были проблемы с обоими методами, и я понял, что мне это действительно не нужно symfony.
Symfony в настоящее время существует в нашем приложении, но используется только различными командами. Все наши основные logi c по-прежнему находятся в устаревшем приложении, поэтому Symfony может получить к нему доступ без проблем, поскольку все классы находятся в глобальном пространстве имен. Однако проблема в том, что унаследованное приложение не может использовать какие-либо новые классы Symfony, поскольку оно не поддерживает внедрение зависимостей. Эта возможность потребуется для того, чтобы начать перенос некоторых из наших основных logi c и функций в Symfony.
В идеале то, что я хотел бы сделать, sh загружается в контейнер. в наше устаревшее приложение, в котором доступны все наши сервисы с автоматическим подключением. Позволяет мне получить доступ к нашим новым службам на основе Symfony в нашем устаревшем приложении.
Любая помощь приветствуется.
Большое спасибо.
Обновить 1
Итак, я попробовал то, что сказал @Cerad, просто получите доступ к ядру, поскольку оно глобальное. Я скопировал bootstrap. php logi c в свою основную конфигурацию для моего устаревшего приложения (поэтому он загружает существующие файлы .env *), затем загрузил ядро (создал его экземпляр и вызвал boot в моей устаревшей конфигурации ). Это работает, я могу ссылаться на $ kernel (используя global $ kernel) в своих файлах php и получить доступ к контейнеру. Однако, что соответствует ответу @Dmitry Solovov, службы должны быть опубликованы c.
Должен ли я установить все службы, которые мне нужны, как publi c? Если я вручную определяю службу в services.yaml, устанавливаю ее в publi c, она работает.
Но это не совсем идеально, поскольку я хотел бы автоматически загружать свои службы, поэтому я могу использовать службы правильный способ и не нужно явно определять каждую службу, которую я хочу, чтобы быть доступной в моем устаревшем приложении.
Как я могу внедрить службы в мои устаревшие контроллеры, не публикуя службу c? Так же, как контроллер Symfony позволяет вам внедрять службы в методы контроллера?
Большое спасибо.