Задонатить и смотреть →
Открой безлимитный доступ к 100+ полезных скринкастов и получай скидки на все предстоящие мероприятия

Авторефакторинг PHP с Rector

Мы перевели проект на PHP 8.3, но код наших классов под новые возможности языка ещё не меняли. Чтобы не делать это вручную, сегодня мы проведём автообновление синтаксиса и авторефакторинг нашего PHP-проекта с помощью полезного инструмента Rector. Также с его помощью упростим использование типов в Doctrine-сущностях и переведём PHPUnit-тесты с аннотаций на атрибуты. И потом спрограммируем собственный настраиваемый ректор для более аккуратного перевода наших классов на синтаксис Constructor Property Promotion:

  • 00:00:07 - Сложность обновления синтаксиса
  • 00:01:30 - Инструмент Rector для PHP
  • 00:05:46 - Установка Rector и файл конфигурации
  • 00:07:09 - Команды запуска в Makefile
  • 00:09:29 - Исправления для PHP 8.3
  • 00:14:21 - Новый атрибут Override
  • 00:20:36 - Служебный интерфейс Stringable
  • 00:23:13 - Передача First Class Callable
  • 00:24:17 - Преобразование в стрелочные функции
  • 00:25:01 - Типы для констант
  • 00:25:31 - Модификатор readonly для полей
  • 00:28:17 - Ручное добавление для Doctrine-классов
  • 00:31:01 - Пометка внутренних методов через internal
  • 00:33:11 - Проблемный Constructor Promotion Rector
  • 00:37:12 - Автоформатирование Doctrine ORM и DBAL
  • 00:40:13 - Пользовательские Doctrine-типы через константы
  • 00:41:17 - Авторефакторинг для PHPUnit-тестов
  • 00:48:54 - Упрощение вызова with для Mock
  • 00:50:22 - Исправление проблемы Constructor Promotion
  • 00:55:18 - Написание своего Rector-класса
  • 00:58:09 - Генерация скелетона для кастомного правила
  • 01:00:56 - Упрощение структуры директорий
  • 01:03:01 - Добавление тестовых примеров
  • 01:06:35 - Параметры конфигурации для правила
  • 01:10:25 - Программирование своего ректора
  • 01:11:35 - Инъекция оригинального ректора
  • 01:13:06 - Проверка на наличие Doctrine-атрибутов
  • 01:15:03 - Подсчёт полей класса и параметров конструктора
  • 01:18:31 - Подключение правила к проекту
  • 01:19:58 - Что бы было со стандартным
  • 01:21:16 - Что у нас получилось

Этим мы сэкономим себе много времени для этого и последующих обновлений на новые версии PHP.

Скрытый контент (код, слайды, ...) для подписчиков. Открыть →
Дмитрий Елисеев
elisdn.ru
Комментарии (4)
Артём

Дмитрий, как же вы вовремя с этой темой, спасибо! Сегодня будет интересный вечер :)

Ответить
Максим

Да, тема полезная, я вот всё жду урок по RabbitMQ...

Ответить
Руслан

Спасибо!

Ответить
Arunas

Спасибо

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий

Или войти через:

Google
GitHub
Yandex
MailRu