PHP 7中的类型提示

PHP 7在标量类型声明和返回类型声明中使用两种类型的提示-

  • 弱类型提示

  • 严格的类型提示

弱类型提示

默认情况下,PHP 7在弱类型检查中起作用,类型检查mode.Weak不会给出任何错误或致命error.When的类型声明不匹配,它只会执行代码而不会引发任何错误。

通过使用strict_typesdeclare(),我们可以控制弱类型检查。

declare(strict_types=0);
//weak type-checking; we should set the strict value = 0

弱类型提示示例1

<?php
   $x=10; // integer variable x =10 value
   $y=20.20; // using floating point number y=20.20 value
   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)); //output float(5.2)
   var_dump(returnadd(3, "2 days")); //fatal error
?>
输出结果

上面的严格类型提示程序将是-

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); // strict mode checking
   $x='1'; // string
   $y=20; //integer number
   function add(int $x, int $y){
      return $x + $y;
   }
   var_dump(add($x, $y));
?>

它将产生输出“致命错误”

在上面的严格类型声明示例中,如果我们声明strict_type值为1,则代码将给出输出“致命错误:Uncaught TypeError:传递给参数1add()的类型必须为int,给出字符串”。