Мы перевели проект на 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...
Спасибо!
Спасибо
Или войти через: