php5与php7版本区别之标量类型与返回值类型声明

标量类型声明

默认情况下,所有的PHP文件都处于弱类型校验模式。

PHP 7 增加了标量类型声明的特性,标量类型声明有两种模式:

  • 强制模式 (默认)
  • 严格模式

标量类型声明语法格式:
declare(strict_types=1);

代码中通过指定 strict_types的值(1或者0),1表示严格类型校验模式,作用于函数调用和返回语句;0表示弱类型校验模式。
可以使用的类型参数有:

  • int
  • float
  • bool
  • string
  • intfaces
  • array
  • callable

强制模式实例

<?php
	// 强制模式
	function sum(int ...$ints)
	{
	   return array_sum($ints);
	}
	
	print(sum(2, '3', 4.1));
?>
以上程序执行输出结果为:9

严格模式实例

<?php
	// 严格模式
	declare(strict_types=1);
	
	function sum(int ...$ints)
	{
	   return array_sum($ints);
	}

print(sum(2, '3', 4.1));
以上程序由于采用了严格模式,所以如果参数中出现不适整数的类型会报错,执行输出结果为:
PHP Fatal error:  Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……

返回类型声明

PHP 7 增加了对返回类型声明的支持,返回类型声明指明了函数返回值的类型。

可以声明的返回类型有:

  • int
  • float
  • bool
  • string
  • intfaces
  • array
  • callable

返回类型声明实例

<?php
   declare(strict_types=1);
   
   function returnIntValue(int $value): int
   {
      return $value;
   }
   
   print(returnIntValue(5));
?>
以上程序执行输出结果为:5

返回类型声明错误实例

<?php
   declare(strict_types=1);
   
   function returnIntValue(int $value): int
   {
      return $value + 1.0;
   }
   
   print(returnIntValue(5));
?>
以上程序由于采用了严格模式,返回值必须是 int,但是计算结果是float,所以会报错,执行输出结果为:
Fatal error: Uncaught TypeError: Return value of returnIntValue() must be of the type integer, float returned...

void 函数
一个新的返回值类型void被引入。 返回值声明为 void 类型的方法要么干脆省去 return 语句,要么使用一个空的 return 语句。 对于 void 函数来说,NULL 不是一个合法的返回值。
返回的类型还有 void,定义返回类型为 void 的函数不能有返回值,即使返回 null 也不行。

void 函数可以省去 return 语句,或者使用一个空的 return 语句。

<?php
	function swap(&$left, &$right) : void
	{
	    if ($left === $right) {
	        return;
	    }
	
	    $tmp = $left;
	    $left = $right;
	    $right = $tmp;
	}
	
	$a = 1;
	$b = 2;
	var_dump(swap($a, $b), $a, $b);
	以上实例输出结果:
	 null
     int(2)
     int(1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值