PHP 7 中的类型提示
phpserver side programmingprogramming更新于 2025/9/18 6:22:17
PHP 7 在标量类型声明和返回类型声明中使用两种类型的提示 −
- 弱类型提示
- 严格类型提示
弱类型提示
默认情况下,PHP 7 工作在弱类型检查模式下。弱类型检查不会抛出任何错误或致命错误。当类型声明不匹配时,它只会执行代码而不会抛出任何错误。
通过使用 strict_typesdeclare(),我们可以控制弱类型检查。
declare(strict_types=0); //弱类型检查;我们应该设置 strict 值 = 0
弱类型提示示例 1
<?php
$x=10; // 整型变量 x 的值 =10
$y=20.20; // 使用浮点数 y 的值 =20.20
function add(int $x, int $y){
return $x + $y;
}
echo add($x, $y);
?>
输出
代码将产生以下输出 −
30
说明
在上面的例子中,我们没有对参数使用严格的值。我们使用了两个整数变量 x 和 y。例如,x=10,y 使用的是浮点数 20.20,但 y 不会产生任何错误;它只会输出整数值 30。
示例 2
<?php
function returnadd(int ...$integers){
return array_sum($integers);
}
var_dump(returnadd(2, '3', 4.1));
?>
输出
上述程序的输出将是 −
int(9)
严格类型提示
当类型声明不匹配时,严格类型提示会抛出致命错误。我们可以说,严格类型提示接受与类型声明完全相同类型的变量,否则会抛出 TypeError 不匹配错误。
在严格类型提示中,文件中的第一个语句必须声明(strict_types=1),否则会产生编译器错误。它不会影响文件中未指定的其他包含文件,这意味着它只会影响使用它的特定文件。
严格类型提示指令完全在编译时生效,无法在运行时控制。
严格类型提示示例 1
<?php
declare (strict_types=1);
function returnadd(float $x , float $y){
return $x+$y;
}
var_dump(returnadd(3.1,2.1)); //输出 float(5.2)
var_dump(returnadd(3, "2 days")); //致命错误
?>
输出
上述严格类型提示程序将会 −
float(5.2)
Fatal error: Uncaught TypeError: Argument 2 passed to returnadd() must be of the type float, string given, called in C:\xampp\htdocs\gud.php on line 7 and defined in C:\xampp\htdocs\gud.php:3 Stack trace: #0 C:\xampp\htdocs\gud.php(7): returnadd(3, '2 days') #1 {main} thrown in C:\xampp\htdocs\gud.php on line 3
严格类型提示示例 2
<?php
declare(strict_types=1); // 严格模式检查
$x='1'; // 字符串
$y=20; // 整数
function add(int $x, int $y){
return $x + $y;
}
var_dump(add($x, $y));
?>
它将产生输出"致命错误"
在上面的严格类型声明示例中,如果我们声明 strict_type 值为 1,代码将输出"致命错误:未捕获的类型错误:传递给 add() 的参数 1 必须是 int 类型,但给出了一个字符串"。

