微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP 函数的字符串类型声明接受整数

如何解决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 举报,一经查实,本站将立刻删除。