Фреймворк Php для медленного рефакторинга унаследованного сайта - PullRequest
2 голосов
/ 25 августа 2010

Я недавно унаследовал php-сайт среднего размера, который ужасно закодирован.Он нарушает все методологии передового опыта, от MVC до DRY, уязвим для SQL-инъекций и всего, что находится между ними.

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

Спасибо.

Ответы [ 8 ]

4 голосов
/ 25 августа 2010

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

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

4 голосов
/ 25 августа 2010

Я поставлю свой голос за CakePHP (http://www.cakephp.org). У него есть возможность очень хорошо управлять всем.

Template

Это позволит вам создать базовый шаблон / макет для сайта. Это основная часть сайта. Вы можете хранить несколько макетов в каталоге views/layouts. Вы можете определить, какой макет вы хотите использовать для любой страницы сайта.

Статическое содержимое

Если у вас есть страницы со статическим содержимым, они все находятся в views/pages. Они будут загружены в макет, куда бы вы не поместили <?php echo $content_for_layout; ?>.

Пользовательский код

Во многих случаях у вас будет собственный код, который может не вписываться в каркас. Не беспокойтесь, вы можете добавить это в папки libs или vendors и вызвать функциональность оттуда.

Быстрое обновление через Bake

Одной из интересных особенностей торта является функция выпечки. После добавления вашей схемы в базу данных вы можете использовать bake, чтобы CakePHP записывал все модели (со связями), контроллеры (с базовыми разделами CRUD и admin) и представления для каждого действия в контроллере. *

Cake отлично подходит для всех проектов, над которыми я работал. Он поддерживает хорошо организованный код, имеет очень активное сообщество, и их документация очень хорошо написана и понятна.

ОБНОВЛЕНИЕ: Для получения дополнительной информации о некоторых сайтах, которые используют cakephp, вы можете посмотреть примерный список здесь: http://book.cakephp.org/view/510/Sites-in-the-wild

Несколько заметных (сайтов с высоким трафиком) будут:

https://addons.mozilla.org

http://scratch.mit.edu/

3 голосов
/ 27 августа 2010

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

Столкнувшисьта же проблема унаследованной кодовой базы, как вы описали, мой ответ состоял в том, чтобы взять Kohana и отключить маршрутизацию запросов, чтобы вы могли просто использовать ее как постраничное включение, пока не будете готовы.* Изменения минимальны;если вам интересно, форк kohana запущен на github

Возможно, вам придется отрегулировать настройки уровня ошибок php в зависимости от kludgey-ness вашего кода;

3 голосов
/ 27 августа 2010

Zend Framework потрясающий.

Еще лучше, этот отличный пост от Криса Абернети показывает, как постепенно перенести существующий сайт из витой тарелки макарон в красивую структуру MVC с использованием ZF.

2 голосов
/ 26 августа 2010

Вы получите столько ответов, сколько пользователей фреймворка в этом месте. Очевидно, что кто-то, использующий рамки по своему выбору, посоветует это другим.

Я выбираю Symfony.

Однако, если вам небезразличны лучшие практики, то и Symfony, и Zend - хороший (и единственный) выбор.

2 голосов
/ 25 августа 2010

Взгляните на Обезжиренный каркас . Он допускает как процедурный, так и код ООП, поэтому вы можете использовать двухэтапный подход. Если базовый код в настоящее время является процедурным, то сначала вы можете сосредоточить все усилия на преобразовании в архитектуру MVC. Таким образом, вы можете иметь представление о том, что все будущие усилия могут быть столь же плодотворными, как и первый этап. Тогда вы можете двигаться слишком строго - ООП. Никакая другая структура не даст вам такой гибкости. И ваши конечные пользователи не почувствуют каких-либо задержек или, что еще хуже, культурного шока.

1 голос
/ 25 августа 2010

Это звучит как масштабное мероприятие.

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

Выберите по любым критериям, которые вы пожелаете, например, государственная поддержка / пользовательская база (Cake's Massive), стиль, название, цвета на веб-странице и все, что угодно.Но мой совет - придерживаться этого выбора и идти по кривой обучения.

0 голосов
/ 17 сентября 2015

Все упомянутые фреймворки хороши, но вам нужно будет переписать множество таких вещей, как запросы.Возможно, вы не захотите использовать ORM, например Doctrine или Eloquent.Просто придерживайтесь чего-то вроде Active Records.Codeigniter, CakePHP и Yii будут в порядке.

но это не будет легкой задачей.будь осторожен!

...