调试与报告需求:Rector规则能否获取当前解析文件名?
Rector规则中访问当前解析文件名的方法
当然可以访问当前解析的文件名,在Rector规则里实现这个需求很直接:
- 如果你是继承
AbstractRector编写自定义规则,类中已经内置了$file属性(类型为\PhpParser\Node\Stmt\File),直接调用其getFilePath()方法就能获取完整文件名。 - 在你的重构逻辑(比如
refactor()方法)中,可在过滤操作后、执行修改前打印文件名,示例代码如下:
public function refactor(Node $node): ?Node { // 你的高度特定过滤逻辑 if (!$this->matchesYourFilter($node)) { return null; } // 打印通过过滤的文件名 $currentFilePath = $this->file->getFilePath(); echo "处理文件:{$currentFilePath}\n"; // 后续重构操作 // ... return $node; }
- 这种方式能确保你清晰看到哪些文件通过了过滤,避免Rector因无修改输出而产生的报告问题,完全满足调试和报告需求。
内容的提问来源于stack exchange,提问作者realtebo
相关产品推荐
相关产品推荐

