PHP 7+MySQL 8动态网站开发从入门到精通(视频教学版)
上QQ阅读APP看书,第一时间看更新

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可以服务于更多的并发用户,无须任何额外的硬件。