- 在ArgInfo类中新增class属性用于存储类型信息 - 修改parseParameterType方法以传递ArgInfo对象并设置类名 - 添加对stdClass和ArrayObject类型的测试用例 - 实现参数类型验证逻辑,确保对象类型匹配 - 增强类型转换过程中对对象类型的检测和错误提示 - 优化数组维度赋值的处理逻辑pull/1/head
parent
932dc070d8
commit
68155d0793
4 changed files with 78 additions and 5 deletions
@ -0,0 +1,37 @@ |
||||
--TEST-- |
||||
type hits |
||||
--FILE-- |
||||
<?php |
||||
function foo(object $data) { |
||||
var_dump($data); |
||||
} |
||||
function main() |
||||
{ |
||||
$obj = new stdClass(); |
||||
$obj->name = "John"; |
||||
$obj->age = 20; |
||||
foo($obj); |
||||
|
||||
$arr = new ArrayObject(); |
||||
$name = "John"; |
||||
$arr["name"] = $name; |
||||
$arr["age"] = 20; |
||||
foo($arr); |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
object(stdClass)#1 (2) { |
||||
["name"]=> |
||||
string(4) "John" |
||||
["age"]=> |
||||
int(20) |
||||
} |
||||
object(ArrayObject)#2 (1) { |
||||
["storage":"ArrayObject":private]=> |
||||
array(2) { |
||||
["name"]=> |
||||
string(4) "John" |
||||
["age"]=> |
||||
int(20) |
||||
} |
||||
} |
||||
@ -0,0 +1,23 @@ |
||||
--TEST-- |
||||
type hits |
||||
--FILE-- |
||||
<?php |
||||
function foo(stdClass $data) { |
||||
var_dump($data); |
||||
} |
||||
|
||||
function main() |
||||
{ |
||||
$obj = new stdClass(); |
||||
$obj->name = "John"; |
||||
$obj->age = 20; |
||||
foo($obj); |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
object(stdClass)#1 (2) { |
||||
["name"]=> |
||||
string(4) "John" |
||||
["age"]=> |
||||
int(20) |
||||
} |
||||
Loading…
Reference in new issue