Мы перевели проект на 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.
Скрытый контент (код, слайды, ...) для подписчиков.
Открыть →Чтобы не пропускать новые эпизоды подпишитесь на наш канал @deworkerpro в Telegram
Дмитрий, как же вы вовремя с этой темой, спасибо! Сегодня будет интересный вечер :)
Да, тема полезная, я вот всё жду урок по RabbitMQ...
+1!)
Спасибо!
Спасибо
Дмитрий, большое спасибо, жду урок по асинхронному CQRS. Добавьте пожалуйста дату создания и дату обновления каждого урока, чтобы было удобнее искать эти конкретные правки из этого урока в репозитории.
Или войти через: