С PHP 7.4 на 8.2: ИИ-ассистент

С

Как я «переезжал» с PHP 7.4 на 8.2: танцы с бубном, ИИ-ассистент и здравый смысл

Обновление PHP до 8.2
Переезд на новую версию PHP

Решил я тут на днях обновить один из своих старых проектов. Знаете, это то чувство, когда сервер уже «кричит» о необходимости апдейта, а ты всё откладываешь, потому что «и так работает». Но пришло время — переезд с PHP 7.4 сразу на 8.2.

Спойлер: легко не было. Скрипт, который верой и правдой служил годами, после смены версии выдал столько «варнингов», что на странице не было видно контента. В этой статье расскажу, как мы с ИИ (в моем случае Gemini) вытягивали проект из болота ошибок, и почему в этом деле всё равно нужно понимать, что ты делаешь.

Когда старый код встречает новый PHP

Основная засада PHP 8.2 — это его строгость. Если раньше «семерка» проглатывала отсутствие ключа в массиве или попытку склеить массив со строкой, то «восьмерка» бьет по рукам.

Первое, что посыпалось — фильтры. Выбираешь город — ошибка. Выбираешь количество комнат — вообще всё падает с криком Array to string conversion. Оказалось, что PHP 8 больше не хочет молча превращать массив параметров в строку “Array”.

ИИ как «старший помощник», но не директор

Взаимодействие с ИИ
ИИ как помощник разработчика

Тут на сцену вышел ИИ. Я не просто копировал ошибки в чат. Я показывал куски кода и говорил: «Смотри, у нас тут пагинация, она пытается склеить параметры URL, а там массив. Давай перепишем цикл так, чтобы он понимал вложенность».

Что мы сделали: Мы переписали функцию сборки ссылок. Вместо простого перебора мы добавили проверку is_array. Если параметр — массив, мы его разворачиваем и упаковываем в URL правильно: rooms[]=1&rooms[]=2.

Вот пример того самого «вылеченного» участка:

Исправленный код PHP

ЧПУ и магия редиректов

Раз уж полезли в код, решили заодно сделать ссылки «красивыми» (ЧПУ). Раньше это были километровые хвосты с ID агентства и кучей мусора. Стало — /obekty/12345/.

Но тут же вылезла «Ошибка 314». Скрипт перестал видеть ID агентства, потому что ждал его в URL, а там его больше нет. Пришлось лезть в логику ядра и прописывать дефолтные значения прямо в классе. ИИ здесь помог быстро найти место «затыка», но решение о том, куда именно вставить костыль, чтобы он не развалил остальное, принимал я сам.

Битва за права: chmod как инструмент, а не случайность

Безопасность и права доступа
Работа с правами доступа

Интересный момент возник с записью файлов. Чтобы поправить логику фильтра прямо «на лету», приходилось играть с правами доступа через SSH.

  1. Даем полный доступ: chmod 666 ...
  2. Правим код, тестируем картинки (кстати, картинки тоже пришлось «ужимать» через SimpleImage, чтобы не забивали память сервера).
  3. Важно! Возвращаем всё обратно в безопасный режим: chmod 644.

Если вы просто попросите ИИ «сделай, чтобы работало», он может и не напомнить, что оставлять файлы открытыми на запись всему интернету — плохая идея. Это и есть та самая грань между «понимаю суть» и «слепо доверяю».

Оптимизация на лету

Ещё одна фишка — работа с изображениями. Старый скрипт при генерации превьюшек в какой-то момент просто «съедал» всю оперативку. Мы внедрили в цикл принудительную очистку объектов через $img = null;. В PHP 8.2 управление памятью работает чуть иначе, и такая явная подсказка сборщику мусора спасла сервер от зависаний.

Итог

Результаты оптимизации
Успешный финал проекта

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

Мой главный вывод: чтобы править код, нужно понимать, как он «дышит». ИИ поможет вам написать буквы, но смысл предложения всё равно за вами. Теперь сайт летает на 8.2, ссылки красивые, а картинки весят в три раза меньше.

Всем чистого кода и быстрой загрузки!

От ponapisala

Статьи

меню