在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进行类型转换的主要内容,如果未能解决你的问题,请参考以下文章

php 7 新特性 strict 模式

PHP7新特性

PHP7 的新增性能

如果我声明为空白页(strict_types=1);在文件顶部的 PHP 7 中

标量类型与返回值类型声明

PHP 7 - 不支持声明'strict_types'