From 2e0cb9db4c05ccc8b25fe509c669fef388ee020f Mon Sep 17 00:00:00 2001 From: tianfenghan Date: Mon, 20 Apr 2026 17:23:35 +0800 Subject: [PATCH] =?UTF-8?q?refactor(php):=20=E4=BC=98=E5=8C=96=E5=8C=BF?= =?UTF-8?q?=E5=90=8D=E7=B1=BB=E5=90=8D=E7=A7=B0=E8=A7=A3=E6=9E=90=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加注释标记匿名类中相对类名转全限定名称的待办事项 - 修复类型声明中的命名空间引用问题 - 统一代码风格以提高可读性 --- src/Php/CompilerBase.php | 1 + src/gen_stub.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Php/CompilerBase.php b/src/Php/CompilerBase.php index f4d5ea3d..66e09eed 100644 --- a/src/Php/CompilerBase.php +++ b/src/Php/CompilerBase.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); diff --git a/src/gen_stub.php b/src/gen_stub.php index 13debda9..f1bbc284 100755 --- a/src/gen_stub.php +++ b/src/gen_stub.php @@ -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()); } };