Rector - меняем аннотации на атрибуты в PHP
В PHP 8.0 появились атрибуты (Attributes).
В какой то момент вам придется перенести старые аннотации в атрибуты.
В этом вам поможет такой инструмент как Rector.
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