Стратегии миграции живого сайта в структуру MVC? - PullRequest
6 голосов
/ 18 октября 2011

В SO много хорошего контента о MVC и о начале работы с MVC, но мне сложно найти что-нибудь о том, как лучше всего реализовать структуру MVC на уже существующем живом веб-сайте.

Мой сайт - отвратительная путаница эха и связанного HTML, который вызовет у любого профессионального программиста , но это работает.

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

Если это вообще возможно, я бы хотел избежать let 'er rip! 100% переписать и запустить подход, и вместо этого взять его раздел за раз.Но кажется, что централизованная структура базового контроллера не подходит для такого подхода?

Ответы [ 3 ]

6 голосов
/ 18 октября 2011

Если я понимаю, каков общий уровень качества для этой кодовой базы, то невозможно перейти в MVC за один шаг . Это просто невозможно. Еще одна плохая новость заключается в том, что фреймворки не помогут . Они не могут волшебным образом преобразовать плохую кодовую базу в нечто, напоминающее архитектуру MVCish.

Вместо этого вам следует сосредоточиться на инкрементном рефакторинге. Вашей целью должен быть код, который в основном следует принципам SOLID и LoD . И пока вы реорганизуете свой код, архитектура будет возникать сама собой. MVC имеет много вариантов и вкусов.

Одна определенная вещь, на которую вы, возможно, захотите взглянуть, - это способы использования шаблонов в php . Изучите код и посмотрите, что вы должны изменить в соответствии со своими потребностями (это скорее направление, а не полное решение). И помните, что в MVC-подобных структурах View не является шаблоном, но View использует несколько шаблонов.

Еще одна полезная вещь - узнать больше о datamappers . Их реализация была бы хорошим шагом в направлении создания слоя модели.

Оу ... и затем есть несколько общих лекций, на которые вы могли бы взглянуть (все 30 минут +):

Да, и эта книга дает некоторое представление о рефакторинге больших php-проектов. Может быть полезно для вас.

5 голосов
/ 18 октября 2011

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

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

Первоначально я недостаточно хорошо знал кохану, поэтому я учился этому, когда перекодировал mysite. В итоге я прекратил переписывать и кодировать совершенно новый проект с нуля, чтобы выучить kohana, затем вернулся к проекту переписывания, теперь, когда я понял структуру лучше.

если вы не понимаете структуру, это будет крутая кривая обучения, пытающаяся использовать ее для преобразования старого проекта

  1. Первым шагом в переписывании было вытянуть всю логику бизнеса / базы данных, встроенную в страницы, до верха каждой страницы (до вывода html). Чтобы я не менял поток / структуру веб-сайта, просто отделял бизнес-логику от логики отображения.

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

  2. Следующим шагом, который я сделал, было исправить все проблемы со структурой базы данных, чтобы все было в 3-й нормальной форме (если это возможно).

    Мне показалось, что проще изменить старый код в соответствии с новой структурой базы данных, а затем обойти и старую структуру базы данных в новой среде. (kohana - это в значительной степени основанная на соглашениях структура, а не конфигурация, поэтому было бы неплохо следовать этим соглашениям, чтобы упростить долгосрочное обслуживание)

    хорошая структура базы данных облегчает жизнь независимо от структуры

  3. Следующим шагом было выбрать часть сайта для замены. установить маршруты в кохане и позволить кохане обслуживать эту часть проекта. у kohana (и других фреймворков, без сомнения) есть запасной вариант: если файл, запрашиваемый через URL, уже существует на сайте, то kohana не будет обрабатывать этот запрос

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

прокладывайте себе путь через эту часть сайта, пока не завершите. затем тест / запуск / исправление и т. д.

затем начните снова со следующей части сайта.

в конце концов вы попадете туда ...

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

удачи

0 голосов
/ 18 октября 2011

можно делать. вы можете написать свой мод переписывает только для перенаправления в boot.php или что-то еще, если по запрошенному пути не найдено никакого действительного файла. это позволит вам сделать раздел за один раз. убедиться, что все ваши ссылки в порядке, будет кошмаром.

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

...