Переход с кода спагетти на Symfony 2 - PullRequest
8 голосов
/ 03 ноября 2011

Я только что получил работу в корпоративной Америке и унаследовал неприятную кучу плоских файлов php 4. Я хочу перейти на Symfony 2, но я никоим образом не получу разрешение пересмотреть все это.

У кого-нибудь есть предложения по переносу небольших частей или разделов проекта в Symfony 2? Возможно, я мог бы создать каталог со всей базой старого кода и начать с использования только маршрутизации в Symfony 2 для захвата старых плоских файлов?

Если у кого-нибудь есть предложения, я бы с удовольствием их выслушал.

Ответы [ 3 ]

3 голосов
/ 03 ноября 2011

Прежде всего, вы спрашивали, позволят ли вам рефакторинг приложения? Вы можете построить экономическое обоснование на основе:

  • Возможность поддерживать программное обеспечение в будущем с меньшими затратами
  • Будет проще познакомить других разработчиков с проектом
  • Будет проще добавлять новые функции

Полный рефакторинг может быть не таким сложным или трудоемким, как вы предполагаете, и его можно выполнять параллельно, поддерживая старое приложение.

Теперь делать то, что вы предлагаете, немного сложнее. Вы должны учитывать следующее:

  • Возможность использования ORM в существующей структуре базы данных зависит от того, насколько хорошо она спроектирована.
  • Большая часть php4-кода не будет работать на php5, и вы можете изменить значительное количество кода, внести ошибки и т. Д.
  • Некоторый пользовательский код потребуется для интеграции сеанса в обе кодовые базы.

Если приведенные выше пункты не являются проблемой, вы можете избежать добавления структуры php4 в веб-папку, чтобы к ним можно было получить прямой доступ, и начать заменять маршруты один за другим при создании каждого экрана в Symfony.

Эти предложения очень контекстные. Это действительно зависит от того, насколько сложным является ваше приложение, и насколько оно действительно грязное.

Удачи тебе!

2 голосов
/ 03 ноября 2011

Прежде всего, поместите пользовательский фронт-контроллер в качестве внешнего интерфейса для этих плоских файлов.

Вы можете перенаправить старые URL-адреса на новый фронт-контроллер с помощью mod_rewrite.

RewriteRule ^/?(.*) /index.php/$0
# this shall work in .htaccess (/paths) and in httpd.conf (non slashed local paths)

Затем можно получить пути в index.php через $_SERVER['PATH_INFO']

С помощью фронтального контроллера вы можете обрабатывать мелкозернистые постепенные перенаправления в любое готовое решение, к которому вы хотите перейти.Для URL-адресов, для которых вы хотите сохранить старую функциональность, некоторые include("./".$_SERVER['PATH_INFO']) справятся с задачей.

1 голос
/ 03 ноября 2011

Мой совет - разбить его на шаги.Часто руководство принимает серию небольших затрат гораздо легче, чем одноразовые.Я бы сосредоточился на том, чтобы очистить код и подготовить PHP5 перед миграцией на Symfony2.

Как только код станет чистым, интеграция Symfony2 в ваш проект должна быть довольно простой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...