在PHP中使用strict_types进行类型转换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在PHP中使用strict_types进行类型转换相关的知识,希望对你有一定的参考价值。
为什么此代码终止没有任何问题?我认为它会输出一个TypeError Exception,因为Integer不能被转换或转换为float的原因,因为strict_types的声明。
?php
declare(strict_types=1);
function multiply(float $a, float $b): float {
return (double)$a * (double)$b;
}
$six = multiply(2, 3);
echo gettype($six);
//output: double
答案
可以基于每个文件启用严格模式。在严格模式下,只接受类型声明的确切类型的变量,否则将抛出
TypeError
。此规则的唯一例外是可以为期望浮点的函数赋予整数。http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration.strict
这是allowed作为widening primitive conversion:
扩展的原始转换不会丢失有关数值总体大小的信息。
以上是关于在PHP中使用strict_types进行类型转换的主要内容,如果未能解决你的问题,请参考以下文章