FSh*_*00b 12 php parameters mixed types strict
我想定义一个PHP 7函数,它接受混合类型的参数.(我想要的是相当于C#中的泛型类型参数;如果有更好的方法在PHP 7中模拟它,请告诉我.)
我的代码如下.
<?php
declare (strict_types = 1);
function test (mixed $s) : mixed {
return $s;
}
// Works
echo gettype ('hello');
// Does not work
echo test ('hello');
?>
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我得到以下内容.
Fatal error: Uncaught TypeError: Argument 1 passed to test() must be an instance of mixed, string given, called in mixed.php on line 11 and defined in mixed.php:4
Stack trace:
#0 mixed.php(11): test('hello')
#1 {main}
thrown in mixed.php on line 4
Run Code Online (Sandbox Code Playgroud)
如果我注释掉对test()的调用,代码运行正常,所以显然我至少可以在函数声明中使用混合参数类型.
我知道内置的PHP函数(如gettype())可以采用混合参数,但我不知道它们是否在内部使用严格的类型.
我看到"混合"在PHP 文档中也被用作伪类型,所以我可能误解了"混合"作为PHP关键字的目的,但我在这里看到的至少暗示我这是合法的关键词.我只是以一种不适合的方式使用它吗?
最后,我意识到我可以通过简单地不指定参数类型来规避所有这些,但我希望通过指定所有参数和返回类型来保持一致.
谢谢,如果我能提供任何其他信息,请告诉我.
| 归档时间: |
|
| 查看次数: |
14335 次 |
| 最近记录: |