PHP是世界上最好的语言,开发快是它最大的优点,凡事有利必有弊。php众所周知,PHP是弱类型语言,在传递参数时,不会检查变量的类型,再加上动态语言的特性,若是写代码不注意,很容易形成类型不符,自动转换类型,而且程序不会报错,形成数据错误和不完整。 在PHP7以后,经过在文件开头用 declare(strict_types = 1) 定义强类型检验后,当函数传参类型不符时,将会抛出错误。
我们加入强类型模式来看一下输出结果
,代码如下:
<?php
declare(strict_types=1);
function sum(int $a,int $b):float
{
return $a+$b;
}
var_dump(sum(1,2));
var_dump(sum(1,2.5));
?>
输出结果为:
float(3)
Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, float given, called in /home/www/learn.php on line 8 and defined in /home/www/learn.php:3 Stack trace:
这里可以看出,强类型模式生效了,sum(1,2.5)一句出错了,2.5因为不是int类型导致程序出现错误。 如果遇到这种情况,我们可以通过捕获异常的方式来捕获这种错误。 代码如下:
<?php
declare(strict_types=1);
function sum(int $a,int $b):float
{
return $a+$b;
}
try {
var_dump(sum(1,2));
var_dump(sum(1,2.5));
}
catch(TypeError $e) {
echo 'Error:'.$e->getMessage();
}
?>
输出结果为:
float(3) Error:Argument 2 passed to sum() must be of the type integer, float given, called in /home/www/learn.php on line 9
————————————————
|