Есть ли решение, позволяющее одному приложению работать от двух фреймворков (Codeigniter + Phalcon)?

Столкнулся со следующей проблемой. Есть проект, напиленный на codeigniter. И ряд задач от багфиксов о новых фич.
Формулировка хотелки заказчика звучит примерно следующим образом: "багфиксы делаем в codeigniter, а новые фичи делаем на phalcon". Я вот не могу найти подходящего решения, как одно приложение может работать от двух фреймворков. Мне кажется это нецелесообразно. Может кто-нибудь подтолкнет к решению?
  • Вопрос задан
  • 3170 просмотров
Решения вопроса 1
AMar4enko
@AMar4enko
Это бред заказчика, если уж откровенно говорить.
Единственный более-менее разумный вариант работы приложения на двух разных фреймворках это разводить по фреймворкам на уровне маршрутизации реверс-прокси.
Типа вот если у нас идут ссылки /gallery/my-awesome-gallery, то делаем делаем upstream на 127.0.0.1:8889, где у нас висит Phalcon, а все остальные ссылки на 127.0.0.1:8888, где CI.
Писать в одном файле код для двух фреймворков - это ад, поддерживать это будет невозможно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Pilat
Наверно, заказчик имел ввиду следующее: "Ваш CodeIgniter работает очень медленно, перепишите всё кроме GUI ( json запросы, например) на Phalcon" - тогда понятно откуда такое требование возникло, и понятно как его исполнять.
Ответ написан
Davert
@Davert
Поэтапно делайте рефакторинг. Сначала одну фичу, один контроллер, потом второй контроллер и т.п. Если модель данных у вас стабилизирована (только багфиксы), то сначала перенесите все модели и начинайте делать контроллеры. Как разделять на уровне сервера - решайте сами. Я бы просто менял настройки роутинга сервера: некоторые урлы на фалкон, некоторые на CI. Остается, конечно, вопрос сессий, но думаю, он вполне решаем, если сессии хранить в одном месте.

НО! И не пытайтесь начинать делать переход без тестов. Вот просто не стоит. Напишите тесты для CodeIgniter, через, например, Codeception с модулем PhpBrowser, а затем, по мере миграции приложения прогоняте эти же тесты на новом приложении с Фалконом. То есть в идеале, ваши тесты должны работать одинаково не зависимо от того какой фреймворк используется.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы