- 实现了函数导入别名功能,解决命名冲突问题 - 添加了命名空间支持,包括嵌套命名空间解析 - 更新了函数定义实体类以支持命名空间属性 - 修改了编译器基础类中的函数解析逻辑 - 调整了扩展模板中函数注册的命名空间处理 - 优化了预处理器中的命名空间定义逻辑 - 完善了翻译器中函数包装器的命名空间支持 - 新增了函数别名查找和解析功能 - 添加了相关测试用例验证功能正确性pull/1/head
parent
ca4a34204c
commit
9118fc4e33
8 changed files with 132 additions and 41 deletions
@ -0,0 +1,38 @@ |
||||
--TEST-- |
||||
string offset 001 |
||||
--FILE-- |
||||
<?php |
||||
// Test positive or null string offsets |
||||
|
||||
function foo($x) { |
||||
var_dump($x); |
||||
} |
||||
|
||||
function main() { |
||||
$str = "abc"; |
||||
var_dump($str[0]); |
||||
var_dump($str[1]); |
||||
var_dump($str[2]); |
||||
var_dump($str[3]); |
||||
var_dump($str[1][0]); |
||||
|
||||
foo($str[0]); |
||||
foo($str[1]); |
||||
foo($str[2]); |
||||
foo($str[3]); |
||||
foo($str[1][0]); |
||||
} |
||||
|
||||
|
||||
?> |
||||
--EXPECTF-- |
||||
string(1) "a" |
||||
string(1) "b" |
||||
string(1) "c" |
||||
string(0) "" |
||||
string(1) "b" |
||||
string(1) "a" |
||||
string(1) "b" |
||||
string(1) "c" |
||||
string(0) "" |
||||
string(1) "b" |
||||
@ -0,0 +1,24 @@ |
||||
--TEST-- |
||||
Try finally (basic test) |
||||
--FILE-- |
||||
<?php |
||||
function foo ($a) { |
||||
try { |
||||
throw new Exception("ex"); |
||||
} finally { |
||||
var_dump($a); |
||||
} |
||||
} |
||||
|
||||
function main() { |
||||
foo("finally"); |
||||
} |
||||
?> |
||||
--EXPECTF-- |
||||
string(7) "finally" |
||||
|
||||
Fatal error: Uncaught Exception: ex %s |
||||
Stack trace: |
||||
#0 %stry_finally_001.php(%d): foo('finally') |
||||
#1 {main} |
||||
thrown in %stry_finally_001.php on line %d |
||||
@ -0,0 +1,33 @@ |
||||
--TEST-- |
||||
aliasing imported functions to resolve naming conflicts |
||||
--FILE-- |
||||
<?php |
||||
|
||||
namespace foo { |
||||
function baz() { |
||||
return 'foo.baz'; |
||||
} |
||||
} |
||||
|
||||
namespace bar { |
||||
function baz() { |
||||
return 'bar.baz'; |
||||
} |
||||
} |
||||
|
||||
namespace { |
||||
use function foo\baz as foo_baz, |
||||
bar\baz as bar_baz; |
||||
|
||||
function main() { |
||||
var_dump(foo_baz()); |
||||
var_dump(bar_baz()); |
||||
echo "Done\n"; |
||||
} |
||||
} |
||||
|
||||
?> |
||||
--EXPECT-- |
||||
string(7) "foo.baz" |
||||
string(7) "bar.baz" |
||||
Done |
||||
Loading…
Reference in new issue