Как исправить старый стиль php скрипта - PullRequest
6 голосов
/ 02 февраля 2010

Есть ли какой-нибудь совет, как начать исправлять php-скрипт в старом стиле?

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

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

Примечание: они не хотят тратить много денег на запуск нового проекта.

Итак, какие методы вы бы предложили для обновления старого php-скрипта?

Ответы [ 6 ]

3 голосов
/ 02 февраля 2010

Джоэл Спольски пишет:

"[Netscape сделал] единственную худшую стратегическую ошибку, которую может сделать любая компания-разработчик программного обеспечения: они решили переписать код с нуля."1006 *

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

Что вы не можете сделать, если база кода не обновлена, что вам абсолютно необходимо?Сколько и что конкретно вам нужно обновить, чтобы это действие было возможно?Подумайте над этими двумя вопросами.

2 голосов
/ 02 февраля 2010

Это зависит от того, что вы подразумеваете под «старым». Старый как написано для PHP 4? Или старый как в не-ООП? (Или оба?)

Старый, как в PHP4:
Пока вы просматриваете его и либо подавляете предупреждения, либо фактически исправляете устаревшие вызовы функций, все должно быть хорошо. Это просто скучная работа. Легко и дешево.

Старый как в не-ООП:
Теоретически можно разработать очень стабильное и масштабируемое приложение без ООП или определенного MVC (или другого) фреймворка. На самом деле, если приложение небольшого масштаба, нет никаких причин добавлять спагетти и фрикадельки в ООП или фреймворк. Переписать все в ООП с некоторыми фреймворками сложно и дорого. И вполне вероятно излишнее.

1 голос
/ 02 февраля 2010

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

  • Начинайте ругаться вручную, включайте операторы и внедряйте автозагрузчик, где это возможно (занимает много проходов)
  • Создайте вспомогательный скрипт для имитации магических кавычек и регистрации глобалов. Это так, чтобы вы могли отключить его в PHP, сохраняя при этом существующий код, работающий
  • Постепенно удаляйте чрезмерные вызовы strip_slashes или add_slashes, если применимо. Вспомогательный скрипт позволяет вам делать это для каждого файла.
  • Убедитесь, что ваши переменные имеют правильную область видимости
  • Отделите ваш код презентации. Рассмотрим Smarty или альтернативную систему шаблонов
  • Переместить вызовы БД в PDO и использовать подстановку параметров для всего
  • Посмотрите на код и подумайте о заглушении фронт-контроллера

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

После того, как избыточность уменьшится, я доберусь до организации. Именно на этом этапе я начинаю планировать свои модели классов и превращать функции в чистые методы. Это также время для автоматических тестов (phpunit). Как только я почувствую себя достаточно уверенно, я добавлю несколько контроллеров и интегрирую шаблоны, а затем я закончу ... за исключением одного или двух проходов.

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

1 голос
/ 02 февраля 2010

Можете ли вы дать нам более подробную информацию, например, пример.

Даже процедурный код содержит элементы ООП. Вы можете определить переменные и процедуры, которые относятся к одной и той же сущности. Вы могли бы переписать его, но им будет трудно найти в нем ценность, особенно если они скромны, как вы и предлагали.

0 голосов
/ 02 февраля 2010

Прочитайте их код.Поговорите с ними.

Посмотрите на запрошенное изменение с точки зрения существующего кода.Поговорите с ними.

Решите, как мало этого вы измените, чтобы делать то, что хотите.Поговори с ними.

Сделай это.Поговорите с ними.

Когда они запрашивают функциональность, которую легче переписать, чем изменить, сделайте это.

Работа с IDE, которая может помочь с рефакторингом.

0 голосов
/ 02 февраля 2010

Возможно, ваш код сейчас выглядит так alt text

И вы хотите, чтобы это выглядело так

alt text

Ну, если бы это был всего лишь скрипт, а не весь проект, я бы преобразовал его в стандарт кодирования ООП.

...