1.3 PHP 7的新特点
PHP 7是PHP编程语言的一个主要版本,是开发Web应用程序的一次革命,可开发和交付移动企业和云应用。此版本被认为是PHP 5后最重要的变化。
和早期版本相比,PHP 7有以下新的特点。
1.标量类型声明
PHP 7增加了对返回类型声明的支持。返回类型声明指明了函数返回值的类型。可用的类型与参数声明中可用的类型相同。例如:
结果会输出:
Array ( [0] => 6 [1] => 15 [2] => 24 )
2.null合并运算符
新增了null合并运算符“??”,可以替换三元表达式和isset()。例如:
$a = isset($_GET['a']) ? $_GET['a'] : 1;
可以用null合并运算符替换如下:
$a = $_GET['a'] ?? 1;
这两个语句的含义都是:如果变量a存在且值不为NULL,就会返回自身的值,否则返回第二个操作数。可见,新增的“??”运算符可以简化条件判断语句。
3.组合比较符
组合比较符“<=>”用于比较两个表达式。例如,“$a<=>$b”表示当$a大于、等于、小于$b时,分别返回1、0、-1。
<?php // 整数类型举例 echo 1 <=> 1; // 输出0 echo 1 <=> 2; // 输出-1 echo 2 <=> 1; // 输出1 // 浮点类型举例 echo 5.5 <=> 5.5 // 输出0 echo 5.5 <=> 7.0; // 输出-1 echo 7.0 <=> 5.5; // 输出1 // 字符串类型举例 echo "a" <=> "a"; // 输出0 echo "a" <=> "b"; // 输出-1 echo "b" <=> "a"; // 输出1 ?>
4.通过define()定义常量数组
对于常量数组,可以使用define()定义,例如:
<?php define('PERSON', ['xiaoming', 'xiaoli', 'xiaolan']); echo PERSON[1]; // 输出 "xiaoli" ?>
5.匿名类
现在支持通过new class来实例化一个匿名类,可以用来替代一些“用后即焚”的完整类定义。
6.支持Unicode字符格式
PHP 7支持任何有效的codepoint编码,输出为UTF-8编码格式的字符串。例如:
<?php echo "\u{6666}"; ?>
在PHP 7环境下输出为“晦”,而在早期版本中输出为“\u{6666}”。
7.更多的Error变为可捕获的Exception
PHP 7实现了一个全局的throwable接口(interface),原来的Exception和部分Error都实现了这个接口,以接口的方式定义了异常的继承结构。于是,PHP 7中更多的Error变为可捕获的Exception返回给开发者,如果不进行捕获则为Error,如果捕获就变为一个可在程序内处理的Exception。这些可被捕获的Error通常都是不会对程序造成致命伤害的Error,例如函数不存在。PHP 7进一步方便开发者处理,让开发者对程序的掌控能力更强。在默认情况下,Error会直接导致程序中断,而PHP 7则提供了捕获和处理的能力,让程序继续执行下去,为程序员提供更具灵活性的选择。
例如,执行一个不确定是否存在的函数,PHP 5兼容的做法是在函数被调用之前追加判断function_exist,而PHP 7则支持捕获Exception的处理方式。
8.性能大幅度提升
PHP 7比PHP 5速度快2倍多。另外,PHP 7降低了内存消耗,优化后,PHP 7使用较少的资源,比PHP 5.6低了50%的内存消耗。同时,PHP 7也支持64位架构的机器,运算速度更快。PHP 7可以服务于更多的并发用户,无须任何额外的硬件。