From 593cd523d5e2817c2c7b131d08c6310cf2c35549 Mon Sep 17 00:00:00 2001 From: tianfenghan Date: Sat, 30 May 2026 15:34:58 +0800 Subject: [PATCH] =?UTF-8?q?feat(php):=20=E6=B7=BB=E5=8A=A0=E5=AF=B9=20any?= =?UTF-8?q?=20=E7=B1=BB=E5=9E=8B=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 CompilerBase.php 中添加 'any' 类型映射到 TYPE_VAR - 修改 gen_stub.php 中的类型解析逻辑以支持 any 类型 - 当遇到 any 类型时返回 mixed 类型的 SimpleType 实例 - 统一变量名使用以提高代码一致性 --- src/Php/CompilerBase.php | 1 + src/gen_stub.php | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Php/CompilerBase.php b/src/Php/CompilerBase.php index 4aad8283..2c803036 100644 --- a/src/Php/CompilerBase.php +++ b/src/Php/CompilerBase.php @@ -163,6 +163,7 @@ class CompilerBase extends \PhpAot\Core\Translator 'object' => self::TYPE_OBJECT, 'mixed' => self::TYPE_VAR, 'null' => self::TYPE_VAR, + 'any' => self::TYPE_VAR, // callable 类型,可以是字符串、数组、对象 // 1) 'foo' 函数名称字符串, 2) [ $obj, 'bar' ] 对象方法数组, 3) Closure 对象, 4) [ 'class', 'staticMethod'] 类名+静态方法数组 'callable' => self::TYPE_VAR, diff --git a/src/gen_stub.php b/src/gen_stub.php index 0728384a..bcf8cd16 100755 --- a/src/gen_stub.php +++ b/src/gen_stub.php @@ -235,11 +235,15 @@ class SimpleType { } if ($node instanceof Node\Identifier) { - if ($node->toLowerString() === 'array') { + $name = $node->toLowerString(); + if ($name === 'array') { return ArrayType::createGenericArray(); } + if ($name === 'any') { + return new SimpleType('mixed', true); + } - return new SimpleType($node->toLowerString(), true); + return new SimpleType($name, true); } throw new Exception("Unexpected node type"); @@ -264,6 +268,8 @@ class SimpleType { case "never": case "ref": return new SimpleType(strtolower($typeString), true); + case "any": + return new SimpleType('mixed', true); case "array": return ArrayType::createGenericArray(); case "self":