Rector - меняем аннотации на атрибуты в PHP

Дата публикации: 2022-12-05
Просмотры: 1521

В PHP 8.0 появились атрибуты (Attributes).
В какой то момент вам придется перенести старые аннотации в атрибуты.
В этом вам поможет такой инструмент как Rector.

Rector - меняем аннотации на атрибуты в PHP

Rector – это утилита для обновления кодовой базы PHP проекта под современные стандарты.

Установка

Для установки библиотеки выполните следующую команду:

composer require rector/rector --dev

Настройка

Для работы библиотеки вам необходим файл с настройками rector.php. Его можно создать как руками, так и с помощь следующей команды:

vendor/bin/rector init

В результате вы получите следующий файл настроек:

use Rector\Config\RectorConfig;
use Rector\Set\ValueObject\SetList;

return static function (RectorConfig $rectorConfig): void {
    $rectorConfig->paths([
        __DIR__ . '/src',
        __DIR__ . '/tests',
    ]);

    $rectorConfig->sets([
        SetList::DEAD_CODE,
    ]);
};

Использование

Для того, чтобы посмотреть какие изменения будут внесены в код, можно выолнить следующую команду:

vendor/bin/rector process --dry-run

Для окончательного изменения выполните:

vendor/bin/rector process

Замена Annotations на Attributes

Вернемся к главной теме статьи. Как же все таки без проблем заменить аннотации на атрибуты в PHP 8+.
Для этого вам необходимо сконфигурировать Rector следуюим образом:

use Rector\Doctrine\Set\DoctrineSetList;
use Rector\Symfony\Set\SymfonySetList;
use Rector\Symfony\Set\SensiolabsSetList;
use Rector\Nette\Set\NetteSetList;
use Rector\Config\RectorConfig;

return function (RectorConfig $rectorConfig): void {
    $rectorConfig->sets([
        DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES,
        SymfonySetList::ANNOTATIONS_TO_ATTRIBUTES,
        NetteSetList::ANNOTATIONS_TO_ATTRIBUTES,
        SensiolabsSetList::FRAMEWORK_EXTRA_61,
    ]);
};

Далее запустите процесс выполнения командой указанной выше.

Теперь для того чтобы Doctrine спользовала по умолчанию атрибуты поменяйте настройки

doctrine:
    orm:
        mappings:
            App:
                type: attribute

На это все. Можно спокойно работать дальше над проектом.


Ссылка на источник: https://getrector.org/documentation

Предыдущая статья:

Вышла новая версия Symfony 6.2

Следующая статья:

Вышла новая версия PHP 8.2
Поделиться статьей:

Комментарии:

Авторизуйтесь, для того, чтобы оставить комментарий. Войти на сайт
Подписка на новости
Узнавайте о новых статьях первыми.
Профиль