PHP7 于 2015 年 11 月正式释出,本次更新可谓是 PHP 的重要里程碑, 它将带来显著的效能改进和新特性,并对之前版本的一些特性进行改进。本文小编将和大家一起来了解探讨 PHP7 中的新特性。
1. 标量型别宣告
我们知道 PHP 是一种弱型别的程式语言, 因此没有提供任何方法来指定输入引数和返回值的型别,PHP7 突破了这种现状,增加了对标量型别(int,float,string,bool)的宣告支援,增加 declare(strict_types=1) 指令宣告是否严格型别校验,我们来看一段程式码:
(strict_types=) {
$x + $y;
} add(, );
有效的型别有:class/interface name, self, array, callable, bool, float, int and string.
2. ?? ——NULL 合并运算子
PHP7 中新增了 NULL 合并运算子,不要小看这个 “??”,有了它我们就能很方便的获取一个引数,并能在其为空的情况下提供一个预设值。如何?? 运算子左侧值存在并且不为 NULL,则返回左侧,否则将返回其右侧值。我们还是通过下面一段程式码来体验一下?? 运算子的强大吧。
3. 匿名类
匿名类顾名思义没有类名称,其宣告和例项化是同时的,PHP7 支援通过 new class 来例项化一个匿名类,可以用来替代一些” 用后即焚” 的完整类定义。
echo ( {
{
;
}
})->myMethod();
4. 更多 Error 错误可以进行异常处理
PHP7 中更多的 Error 变为可捕获的 Exception 返回给开发者,如果不进行捕获则为 Error,如果捕获就变为一个可在程式内处理的 Exception 。预设情况下,Error 会直接导致程式中断,而 PHP7 则通过 try / catch 程式块捕获并且处理,让程式继续执行下去,为程式设计师提供更灵活的选择。
程式码示例:
nonExistFunction($arg);
这时上面的程式码会提示错误 “Fatal error: Call to a member function method() on a non-object ”,并且这个致命错误会停止后面程式码的继续执行。
所以如果你想继续执行程式码,可以通过异常处理的方式解决:
{
nonExistFunction($arg); } (EngineException $e ) {
;
}
5. 结合比较运算子(<=>)
这个不多解释,我们直接看示例程式码,通过程式码你可以很容易了解该运算子的作用。
{
($a < $b) ? : (($a > $b) ? : )
} {
$a <=> $b;
}
6. 定义阵列常量
过去我们在用 define() 定义常量时,资料型别只支援标量,但在 PHP7 中,支援定义阵列型别的常量。
define(‘MYCONSTANT’, array(‘a’,’b’,’c’))
PHP7 新增的特性还有很多,今天我们先介绍到这,后续会持续更新,同时也欢迎广大 PHPer 补充,我们共同交流,共同学习,共同进步。