- 在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