- 添加函数作用域层级管理功能,支持嵌套作用域跟踪 - 实现抽象类和接口类型的实例化检查,防止非法创建实例 - 优化参数类型声明处理,增加对象参数的作用域管理 - 添加标准数组创建的位置限制检查,确保在顶层作用域创建 - 扩展继承关系检查逻辑,支持内部接口的类型验证 - 增加完整的单元测试覆盖类型命中和声明功能pull/1/head
parent
1e22f19e63
commit
30ad4dbb0e
5 changed files with 85 additions and 1 deletions
@ -0,0 +1,8 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
namespace PhpAot\Php\Context; |
||||||
|
|
||||||
|
class ScopeContext |
||||||
|
{ |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
--TEST-- |
||||||
|
Type Declarations |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
class Foo1123 { |
||||||
|
public function bar() { |
||||||
|
var_dump(__METHOD__); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function foo(Foo1123 $v1) { |
||||||
|
$v1->bar(); |
||||||
|
} |
||||||
|
|
||||||
|
function main() { |
||||||
|
$o = new Foo1123; |
||||||
|
foo($o); |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECTF-- |
||||||
|
string(12) "Foo1123::bar" |
||||||
@ -0,0 +1,22 @@ |
|||||||
|
--TEST-- |
||||||
|
type hits |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
function foo(Stringable $data) { |
||||||
|
var_dump(strval($data)); |
||||||
|
} |
||||||
|
|
||||||
|
class A implements Stringable { |
||||||
|
public function __toString() : string { |
||||||
|
return "Hello World"; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function main() |
||||||
|
{ |
||||||
|
$obj = new A(); |
||||||
|
foo($obj); |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
string(11) "Hello World" |
||||||
Loading…
Reference in new issue