Поскольку Doctrine, похоже, полностью удалила поддержку аннотаций в своих последних обновлениях, я пытаюсь преобразовать аннотации в своих сущностях в атрибуты с помощью Rector.
Я следовал (казалось бы) простому официальному туториалу — у меня точно такое же содержимое rector.php, только без NetteSetList:
use Rector\Doctrine\Set\DoctrineSetList;
use Rector\Symfony\Set\SymfonySetList;
use Rector\Symfony\Set\SensiolabsSetList;
use Rector\Config\RectorConfig;
return function (RectorConfig $rectorConfig): void {
$rectorConfig->sets([
DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES,
SymfonySetList::ANNOTATIONS_TO_ATTRIBUTES,
SensiolabsSetList::FRAMEWORK_EXTRA_61,
]);
};
Я запускаю тест с помощью vendor/bin/rector process src/Entity --dry-run --debug.
Он перечисляет каждую отдельную сущность в src/Entity, но не обнаруживает никаких возможных изменений, когда он должен заменить каждую аннотацию доктрины атрибутами.
@Морис, я не нашел решения






Возможно, вы используете PHPStan? Кажется, что файл конфигурации phpstan.neon автоматически используется Ректором, независимо от того, говорите вы об этом или нет.
я сделал следующее
phpstan.neon файл из корневого каталога проекта--clear-cache. Кажется, что без него изменение конфигурации в phpstan.neon не распознается.И вот ректор снова предлагает изменения.
Кажется, это как-то связано с опцией scanFiles в phpstan.neon. В нашем случае у него была запись для исправления проблем, когда PHPCS принуждает использовать глобальные константы в пользовательских сниффах.
parameters:
scanFiles:
- vendor/squizlabs/php_codesniffer/src/Util/Tokens.php
У меня пока нет подробностей. Но, возможно, это может помочь вам.
Спасибо за предложение, но я не использую PHPStan :(
У меня была та же проблема, и я решил ее, изменив версию Php в composer.json, как описано здесь: Настройте Rector и используйте простое правило с symfony 6/php8
Просто нужно изменить версию php 7 на 8 "php": ">=7.2.5" в "php": "^8.0"
Я надеюсь, что это поможет :)
У меня такая же проблема с 0.14.6 в одном проекте, но не в другом. Я даже скопировал изменение между проектами, но Ректор подхватывает его только в одном из них. Вы нашли решение за это время?