Какой фреймворк php использовать поверх кодовой базы спагетти? - PullRequest
8 голосов
/ 26 января 2010

Моя команда должна поддерживать большое php-приложение, которое было написано очень плохо. Это смесь html, javascript и SQL поверх большой плохо спроектированной базы данных (например, у нее есть таблица с несколькими сотнями столбцов). Единственное преимущество кодовой базы в том, что она работает.

Мы постоянно исправляем ошибки и переписываем их части.

Я хотел бы дать структуру переписываемых нами текстов, поэтому я хотел бы интегрировать инфраструктуру mvc в кодовую базу. Не могли бы вы предложить какие-либо хорошие рамки для окружающей среды?

Вот список вещей, которые я бы ожидал от такой структуры:

  • API должен быть очень стабильным. Мы не можем позволить себе переписывать код в каждом выпуске.
  • Настраиваемое управление сеансом или, по крайней мере, работа со стандартным $ _SESSION [] (для возможности общения со старым кодом).
  • Пользовательская аутентификация.
  • Использование исходного SQL должно хорошо поддерживаться (базу данных трудно представить в терминах объектов).
  • Не следует предполагать, что у меня будет таблица на контроллер.

Ответы [ 2 ]

3 голосов
/ 26 января 2010

Я предлагаю Zend Framework для этой цели, потому что это клеевой фреймворк. С ZF вы не будете вынуждены использовать то, что фреймворк ожидает, что вы будете с ним работать. Вы можете выбрать то, что вы хотите, и постепенно заменить свой старый код кодом из ZF. Он также поддерживает все вещи, которые вы упомянули.

Кроме того, я предлагаю запустить различные инструменты QA, найденные на phpqatools.org , чтобы помочь вам в отладке и рефакторинге.

Рамки сравнения

2 голосов
/ 26 января 2010

Я повторяю Zend, просто чтобы перечислить, как это соответствует вашим конкретным требованиям:

  • API должен быть очень стабильным. Мы не можем позволить себе переписывать код в каждом выпуске.

Как уже упоминалось, API имеет тенденцию быть стабильным между второстепенными выпусками. Основные выпуски с изменениями не должны быть сложными для интеграции.

  • Настраиваемое управление сеансом или, по крайней мере, работа со стандартным $ _SESSION [] (чтобы иметь возможность общаться со старым кодом).

Zend_Session делает именно то, что вы хотите. Хранилище сеансов по умолчанию - $ _SESSION, к которому Zend добавляет концепцию пространства имен. Ваш существующий код должен быть в порядке, и любой новый код может использовать объект Zend, чтобы гарантировать отсутствие совпадений имен переменных.

  • Пользовательская аутентификация.

Zend_Auth имеет несколько бэкэндов аутентификации, но он разработан, чтобы позволить вам реализовать собственную аутентификацию.

  • Использование сырого SQL должно хорошо поддерживаться (базу данных трудно представить в терминах объектов).

Zend_DB реализует шаблон шлюза таблицы, который позволит вам получить доступ к данным через объект; однако вы также можете просто использовать SQL напрямую и получать результаты в виде массивов.

  • Не следует предполагать, что у меня будет таблица на контроллер.

Zend_Controller и остальная часть реализации Zend MVC не делают никаких предположений относительно Модели, оставляя это полностью на ваше усмотрение. Я уверен, что некоторым это не нравится, но это одна из областей дизайна MVC, которая сильно варьируется от проекта к проекту, так что это полностью остается за разработчиком. Вы можете расширить некоторые классы БД или просто использовать существующий код доступа к БД.

Это пример менталитета выбора и выбора Zend Framework. Вы действительно можете использовать любую библиотеку отдельно. Это должно хорошо работать с вашим проектом. Например, вы можете использовать Zend_View без остальных классов MVC просто для перемещения вашей презентации в шаблоны. Или просто используйте Zend_Auth для замены существующей системы аутентификации. С Zend вы можете постепенно переводить ваш проект в более структурированное состояние, постепенно.

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