如何解决PHP 函数的字符串类型声明接受整数
我原以为以下内容会产生类型错误,因为 123
是整数而不是字符串,所以向需要字符串的函数提供整数是否可以?
foo(123);
function foo(string $str) {
...
}
解决方法
是的,因为整数可以转换为字符串(例如数组不能)。
是的,除非您声明 declare(strict_types=1)
。
foo(123);
function foo(string $str) {
var_dump($str); // string(3) "123"
}
但以下内容:
declare(strict_types=1);
function foo(string $str) { }
foo(123); // FAIL (Uncaught TypeError)
会抛出:
致命错误:Uncaught TypeError: foo(): Argument #1 ($str) must be of type string,int given
,PHP manual 非常具体地说明了这种行为,并直接说明了您提出的示例:
默认情况下,如果可能,PHP 会将错误类型的值强制转换为预期的标量类型声明。例如,一个函数为一个需要字符串的参数提供一个 int 值,将得到一个字符串类型的变量。
这是否“OK”(如您所问)高度依赖于实现。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。