由于 Doctrine 似乎在其最新更新中完全删除了注释支持,我正在尝试使用 Rector 将实体中的注释转换为属性。
我遵循了(看似)简单的官方教程 - 我有完全相同的ector.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
中的每个实体,但在应该用属性替换每个学说注释时没有检测到任何可能的更改。
我遇到了同样的问题,我通过更改composer.json中的Php版本来解决它,如下所述: 配置 Rector 并使用 symfony 6/php8 的简单规则
只需将 php 版本 7 更改为 8 “php”:“>=7.2.5”到“php”:“^8.0”
我希望这有帮助:)
您可能使用 PHPStan 吗?看起来
phpstan.neon
配置文件会被 Rector 自动使用,无论你是否告诉它。
我做了以下事情
phpstan.neon
文件--clear-cache
选项再次运行 Rector。如果没有它,它似乎无法识别 phpstan.neon
中的配置更改。现在校长再次建议改变。
好像和
scanFiles
中的phpstan.neon
选项有关。在我们的例子中,它有一个条目来修复 PHPCS 强制在自定义嗅探中使用全局常量的问题。
parameters:
scanFiles:
- vendor/squizlabs/php_codesniffer/src/Util/Tokens.php
我还没有更多细节。但也许这可能对你有帮助。
对于 Rector 和 Symfony 的最新版本(2024),请使用以下语法:
->withSets([
DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES,
SymfonySetList::ANNOTATIONS_TO_ATTRIBUTES,
SensiolabsSetList::ANNOTATIONS_TO_ATTRIBUTES,
])