Sit*_*ose 1 php string types function hints
类型提示对于字符串不起作用。
function def_arg(int $name, int $address, string $test){
return $name . $address . $test;
}
echo def_arg(3, 4, 10) ;
// It doesn't throws an error as expected.
Run Code Online (Sandbox Code Playgroud)
另一方面。如果你在第一个参数中给出字符串,它会抛出一个错误,指出它应该是一个 int。
function def_arg(int $name, int $address, string $test){
return $name . $address . $test;
}
echo def_arg("any text", 4, "abc") ;
// this code throws an error
// "Fatal error: Uncaught TypeError: Argument 1 passed to def_arg() must be of the type integer, string given,"
Run Code Online (Sandbox Code Playgroud)
为什么字符串情况下没有错误?
这是因为默认情况下,如果可能,PHP 会将错误类型的值强制转换为预期的标量类型。例如,为需要字符串的参数指定整数的函数将获得字符串类型的变量。
看这里
如果您使用可以在第二个示例中转换的值,它将起作用:
function def_arg(int $name, int $address, string $test){
return $name . $address . $test;
}
echo def_arg("12", "22", 1) ;
Run Code Online (Sandbox Code Playgroud)
这是因为这些值可以从 string 转换为 int,反之亦然。
可以在每个文件的基础上启用严格模式。在严格模式下,仅接受类型声明的精确类型的变量,否则将抛出 TypeError 。此规则的唯一例外是,可以将整数赋予需要浮点数的函数。来自内部函数内部的函数调用不会受到 strict_types 声明的影响。
| 归档时间: |
|
| 查看次数: |
1215 次 |
| 最近记录: |