Разработка и поддержка на PHP
На PHP написана огромная доля работающих сайтов, и значительная часть — это самописные проекты без документации, автор которых давно недоступен. Такие проекты чаще всего и приносят к нам: они работают, но развивать их некому.
Мы беремся за них. Первым делом — разведка: на какой версии PHP это живёт, есть ли система контроля версий, можно ли развернуть копию. От ответов зависит, как строить дальнейшую работу.
Обсудить задачуКак входим в унаследованный проект
- 01
Разворачиваем копию
Сначала добиваемся того, чтобы проект запускался локально. Иногда одно это оказывается нетривиальной задачей.
- 02
Ставим под контроль версий
Если истории изменений нет, заводим её. Без этого любая правка необратима.
- 03
Проверяем версию PHP
Старые версии не получают исправлений безопасности. Обновление часто оказывается первым необходимым шагом.
- 04
Находим точки входа
Разбираемся, где обрабатываются формы и запросы. В самописных проектах структура редко очевидна.
- 05
Делаем первую задачу
Небольшую и проверяемую — чтобы убедиться, что цикл правки и выкладки работает, до того как браться за крупное.
Когда старый PHP-проект пора менять
Признаки, при которых доработка обходится дороже разработки заново: правки вносятся прямо на боевом сервере, версия PHP снята с поддержки и обновление ломает половину функций, одна и та же логика продублирована в десятке файлов.
Даже в этом случае выбрасывать всё сразу не обязательно. Часто разумнее вынести новую функциональность в отдельный современный модуль рядом со старым кодом и переводить проект по частям — без периода, когда не работает ничего.
Что обычно спрашивают
У нас самописный сайт без документации. Возьмётесь?
Обычно да. Начинаем с разведки и говорим честно, что можно делать в текущем коде, а что потребует переделки, — с обоснованием, а не с общим «тут всё плохо».
Сайт на PHP 5, что делать?
Эта версия давно снята с поддержки, и хостинги её постепенно отключают. Обновление неизбежно; вопрос в том, обновлять код постепенно или переписывать. Решаем после оценки объёма.
Можно ли обновить PHP без переписывания?
Иногда достаточно исправить несовместимости — это заметно дешевле переписывания. Объём становится понятен после автоматической проверки кода на совместимость.
Что с безопасностью старых проектов?
Проверяем классические места: работу с базой, загрузку файлов, хранение паролей, доступ к админке. В унаследованных проектах находки бывают почти всегда.
Сколько стоит работа с legacy-проектом?
Считаем после разведки. Оценивать чужой код вслепую нечестно: разброс трудоёмкости слишком велик.
