refactor(php): 优化匿名类名称解析逻辑

- 添加注释标记匿名类中相对类名转全限定名称的待办事项
- 修复类型声明中的命名空间引用问题
- 统一代码风格以提高可读性
pull/1/head
韩天峰 4 months ago
parent 1567ad2f88
commit 2e0cb9db4c
  1. 1
      src/Php/CompilerBase.php
  2. 2
      src/gen_stub.php

@ -3072,6 +3072,7 @@ class CompilerBase extends \PhpAot\Core\Translator
$className = $this->genAnonClassName();
$classDef->name = new Node\Identifier($className);
// 继承父类可能是 use 的名称,需要转换成全限定名称
// TODO 匿名类的属性、常量、方法参数中都可能会用相对类名,都需要转为全限定名称
if ($classDef->extends !== null) {
$parentClass = $this->getNamespacedClassName($classDef->extends->toString());
$classDef->extends = new Node\Name\FullyQualified($parentClass);

@ -4359,7 +4359,7 @@ class FileInfo {
$nodeTraverser = new PhpParser\NodeTraverser;
$nodeTraverser->addVisitor(new PhpParser\NodeVisitor\NameResolver);
$prettyPrinter = new class extends Standard {
protected function pName_FullyQualified(Name\FullyQualified $node): string {
protected function pName_FullyQualified(PhpParser\Node\Name\FullyQualified $node): string {
return implode('\\', $node->getParts());
}
};

Loading…
Cancel
Save