PHP7系列:新特性(二)

PHP7的新特性

太空船操作符 : <=>

太空船操作符用于比较两个表达式

 例如,当\$a小于、等于或大于\$b时它分别返回-101
   echo 1 <=> 1; //0
   echo 1 <=>2; //-1
   echo 2 <=>1; //1
类型声明

declare(strict_types=1);//strict_type=1表示开始严格模式

function sumOfInts(int ...$ints):int{
	return array_sum($ints);
}
null合并操作符 : ??
\$page = isset($_GET['page']) ? $_GET['page'] : 0;  这种写法可以改成:
\$page = $_GET['page'] ??  0; 
常量数组
define('ANIMALS', ['dog', 'cat', 'bird']);
NameSpace批量导入
use Space\{Classs A, Classs B,Classs C}
throwable 接口

PHP 7 改变了大多数错误的报告方式。不同于 PHP 5 的传统错误报告机制,现在大多数错误被作为 Error 异常抛出。

这种 Error 异常可以像普通异常一样被 try / catch 块所捕获。如果没有匹配的 try / catch 块, 则调用异常处理函数(由 set_exception_handler() 注册)进行处理。 如果尚未注册异常处理函数,则按照传统方式处理:被报告为一个致命错误(Fatal Error)。

Error 类并不是从 Exception 类 扩展出来的,所以用 catch (Exception $e) { … } 这样的代码是捕获不 到 Error 的。你可以用 catch (Error $e) { … } 这样的代码,或者通过注册异常处理函数( set_exception_handler())来捕获 Error。

try{
	undefinedfinc();  //调用未定义的方法
} catch(Error $e) {
	var_dump($e);
}
# 5.6会直接报错:Fatal error: Call to undefined function undefinedfinc() in ...
# 7.x会捕获到错误信息并打印出来:
# object(Error)#1 (7) {
#  ["message":protected]=>
#  string(42) "Call to undefined function undefinedfinc()"
#  ["string":"Error":private]=>
#  string(0) ""
#  ["code":protected]=>
#  int(0)
#  ["file":protected]=>
#  string(15) "/root/throw.php"
#  ["line":protected]=>
#  int(3)
#  ["trace":"Error":private]=>
#  array(0) {
#  }
#  ["previous":"Error":private]=>
#  NULL
# }

# php7还可以通过set_exception_handler 捕获异常,一样的效果:
set_exception_handler(function($e){
	var_dump($e);
})
undefindfunc();

Closure::call()

将一个闭包函数动态绑定到一个新的对象实例并调用执行该函数。

calss Test{
	private $num = 1;
}

$fun = function(){
	return $this->num + 1;
}

echo $fun->call(new Test); // 2

intdiv 函数

返回值为第一个参数除于第二个参数的值并取整。

intdiv(10, 3);  //3
list 的方括号写法
$arr = [1,2,3];
[$a,$b,$c] = $arr;  // $a = 1, $b = 2, $c = 3
抽象语法树(AST)

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值