feat(php): 添加对 any 类型的支持

- 在 CompilerBase.php 中添加 'any' 类型映射到 TYPE_VAR
- 修改 gen_stub.php 中的类型解析逻辑以支持 any 类型
- 当遇到 any 类型时返回 mixed 类型的 SimpleType 实例
- 统一变量名使用以提高代码一致性
pull/1/head
韩天峰 3 months ago
parent fda0acc38f
commit 593cd523d5
  1. 1
      src/Php/CompilerBase.php
  2. 10
      src/gen_stub.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,

@ -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":

Loading…
Cancel
Save