Учитывая ваш ответ на ответ Тома, я бы порекомендовал вам взглянуть на что-то вроде Zend Framework. Его ORM имеет архитектуру «возьми или оставь», которая может быть реализована поэтапно.
Когда я пришел к моему нынешнему работодателю, у них было заявление, которое было только что заполнено несколькими месяцами ранее, но прошло одну или две предыдущие версии, а текущая версия находилась в разработке на шесть месяцев дольше, чем предполагалось. Тем не менее, кодовая база была беспорядочной. Например, не было абстракции между логикой доступа к базе данных и бизнес-логикой. И они хотели, чтобы я продвигал сайт вперед, создавая новые функциональные возможности, расширяя существующие функции и исправляя существующие ошибки в коде. Чтобы еще больше усложнить ситуацию, они не использовали никакой формы санитарии для ввода или вывода данных.
Когда я начал вникать в проблему, я понял, что мне нужно решение абстрактных проблем, которое можно было бы реализовать поэтапно, поскольку они, очевидно, не собирались полностью переписывать. Мой первоначальный подход состоял в том, чтобы написать собственный ORM и DAL, который бы сделал тяжелую работу для меня. Он отлично работал, потому что не вмешивался в существующую кодовую базу, и поэтому позволял мне незаметно перемещать целые части приложения в новую архитектуру.
Однако, после того, как большая часть пользовательской области нашего сайта была перенесена в эту новую структуру и построено целое приложение на моей пользовательской инфраструктуре (которая также включает в себя пользовательский интерфейсный контроллер и реализацию mvc), Я перехожу на Zend Framework (это мой выбор, хотя я уверен, что некоторые другие фреймворки также будут работать в этой ситуации).
При переходе на Zend Framework у меня нет абсолютно никаких опасений по поводу устаревшей базы кода, потому что:
- Я могу создавать новые модели и рефакторинг
старые модели (построено по моему заказу
рамки) ненавязчиво.
- Я могу реорганизовать существующие
контроллеры (такие как они) должны быть
завернутый в класс, который ведет себя
в соответствии с Zend's
Рамки MVC, чтобы он стал
небольшая проблема на самом деле начать использовать
Контроллер внешнего интерфейса Zend.
- Наши взгляды уже встроены
Умничка, так что мне не о чем беспокоиться
о разделении контроллера и просмотра
логика, но я смогу расширить
Zend Framework, чтобы я мог
визуализировать существующие шаблоны в Smarty
при создании новых шаблонов в
прямой PHP.
По сути, Zend Framework имеет архитектуру «забирай или уходи», которая позволяет использовать его в существующих проектах, потому что новый код и переработанный код не должны вмешиваться в существующий код.