- 在内置方法查找后添加扩展方法的返回类型检查 - 重构 findExtensionMethod 调用逻辑以支持链式调用场景 - 使用函数定义的返回类型而非默认的 TYPE_VAR - 移除冗余的命名空间函数查找逻辑pull/1/head
parent
eb31e3584b
commit
1476e5a4eb
2 changed files with 68 additions and 8 deletions
@ -0,0 +1,55 @@ |
||||
--TEST-- |
||||
Universal method: extension function chaining with typed return |
||||
--FILE-- |
||||
<?php |
||||
|
||||
use native_types; |
||||
|
||||
function int_to_words(int $int): string |
||||
{ |
||||
$map = [1 => 'one', 2 => 'two', 3 => 'three']; |
||||
return $map[$int] ?? 'unknown'; |
||||
} |
||||
|
||||
function str_double(string $str): string |
||||
{ |
||||
return $str . $str; |
||||
} |
||||
|
||||
function str_get_length(string $str): int |
||||
{ |
||||
return strlen($str); |
||||
} |
||||
|
||||
function str_to_array(string $str, string $delimiter): array |
||||
{ |
||||
return $str->split($delimiter); |
||||
} |
||||
|
||||
function array_last(array $arr): mixed { |
||||
if ($arr->count() === 0) { |
||||
return null; |
||||
} |
||||
return $arr[$arr->count() - 1]; |
||||
} |
||||
|
||||
function main() |
||||
{ |
||||
$num = 2; |
||||
var_dump($num->toWords()->upper()); |
||||
var_dump($num->toWords()->double()->upper()); |
||||
|
||||
$str = "hello"; |
||||
var_dump($str->getLength()->add(100)); |
||||
var_dump($str->double()->length()); |
||||
|
||||
$str2 = "hello world"; |
||||
var_dump($str2->split(" ")->last()); |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
string(3) "TWO" |
||||
string(6) "TWOTWO" |
||||
int(105) |
||||
int(10) |
||||
string(5) "world" |
||||
Loading…
Reference in new issue