День добрый. Работая над старым проектом появилась задача перенести его на Symfony. Причем перенести не сразу, а новые модули писать на symfony, а старые чтобы дорабатывали свое на старом движке, работая параллельно. Скажите, сталкивался кто с такими задачами? Или как заставить работать symfony со сторонним движком? Чтобы вызовы шли из стороннего кода к коду symfony(вообще предполагаю ставить в разных дирректориях). Спасибо за здравые мысли и идеи ;)
1) делаем адаптер PSR-7 (или HttpKernel) к вашему движку
2) делаем приложеньку на симфони
3) ставим мидлвэр который будет разруливать на какое приложение какие запросы кидать. Это можно разруливать и через nginx но как-то не круто.
4) когда начинаем пилить функционал на симфони и нужно что-то реюзать из старой кодобазы, стараемся отделить то что мы хотим заюзать от старой инфраструктуры (можно скажем сервис-декоратор запилить для старого движка) и регистрируем его в DI
5) постепенно переносим код, модель можно оставить старую если это возможно.
По сути основная сложность отделить модель от инфраструктуры движка и почистить сервисный слой.
Symfony - это фреймворк. Одна из особенностей фреймоврка - он вызывает пользовательский код, а не наоборот.
Так что если нужно сделать проект на symfony - Вам нужно полностью переделать его на симфони (сделать так, чтобы симфони вызывал ваш код).
Или есть вариант использовать отдельные компоненты симфони, используя их как вам удобно.
Иван: тогда будет проще мигрировать на симфони. Можно, конечно, придумать какие-то связки для проброса одних запросов на симфони, других на ваш старый движок, но по мне так это все костыли и просто отнимет у вас время, которое вы могли бы потратить на перенос проекта на симфони.
Можно реализовать общение между старым движком и новым движком через специальное API. То есть программно движки не связаны, общаются только через HTTP запросы.
Сейчас аналогично интегрируем в проект Silex.
Старый код - вообще лапша на php местами.
Поставили silex параллельно со старым движном, ибо всё, что ему нужно - это index.php в корне веб-папки. Роутинг у нас оказался не затронут, потому что не было красивых урлов в старом движке.
Новые разделы - соответственно на silex, пишем свои классы. Из важного - это настроили автолоадер новых классов, чтобы их можно было использовать в старых файлах.