默认情况下,所有的php文件都处于弱类型效验模式。PHP7加了标量类型的声明特性,标量类型声明有两种模式:强制默认(默认)和严格模式。
标量类型的声明语法格式如下:
declare(strict_types=1);
通过指定strict_types
的值(1或者0)来表示效验模式:1表示严格类型效验模式,作用于函数调用和返回语句;0表示强制类型效验模式。
提示:可以声明标量类型的参数类型包括int、float、bool、string、interfaces、array和callable。
强制模式
function sum(int ... $ints) {
return array_sum($ints);
}
print(sum(2, '3', 4.1));
运行结果是9,代码中的数字4.1会先转换成4,然后再进行相加的操作。
严格模式
<?php
declare(strict_types=1); //严格模式,必须写在首行
function sum(int ... $ints) {
return array_sum($ints);
}
print(sum(2, '3', 4.1));
?>
当然运行这个会出错,主要是传递给sum的三个参数,有两个不是整型:‘3’(字符串)和4.1(浮点)。
还有一点,如果定义了严格模式,返回值如果不符合规定的数据类型也会报错。