PHP 目前依旧是其它脚本语言强劲的竞争对手,这主要归功于其核心维护团队的快速更新。
自从PHP 7.0 发布以来,社区见证了许多新特性的诞生,极大地改进了开发者在项目中应用 PHP 的方式。提高 PHP 应用的性能和安全性,是这些改进的主要目的。
在本文中,我将论述新推出的 PHP 7.3 特性 和更新。好消息是,你可以在你的测试服务器上自行安装新版本、查看新功能。但老生常谈,切勿在生产服务器上使用 RC 版本更新,可能会破坏你已经上线的应用。
以下是7.3版中引入的一些更新,与以前的版本相比,它们大大提高了 PHP7.3 的性能 。
- 灵活的 Heredoc 和 Nowdoc 语法
- 函数调用时允许尾随逗号
- JSON_THROW_ON_ERROR
- PCRE2 迁移
- list() 分配参考
- is_countable 函数
- array_key_first(), array_key_last()
- Argon2 密码哈希增强功能
- 弃用和删除 image2wbmp()
- 弃用和删除不区分大小写的常量
- 相同站点 Cookie
- FPM 更新
- 改进 Windows 下的文件删除
让我们逐一讨论上述的每一个更新。 灵活的 Heredoc 和Nowdoc 语法
- // 除了这样:
- $query = <<<SQL
- SELECT *
- FROM `table`
- WHERE `column` = true;
- SQL;
- // 这样也可以:
- $query = <<<SQL
- SELECT *
- FROM `table`
- WHERE `column` = true;
- SQL;
复制代码
总的来说,此更新提出了两项改进,如下: 在上面的例子里,可以很容易地看出这些改动。 函数调用中允许尾部逗号
在参数、元素、变量列表结尾,追加尾部逗号。有时我们在数组内以及函数调用(尤其是可变参函数)时需要传递大量元素,若是漏掉一个逗号,便会报错。鉴于如上情况,尾部逗号便显得十分有用。这个特性已经允许在数组内使用,并且从 PHP 7.2 开始,分组命名空间(Grouped Namespaces)语法也开始支持尾部逗号。
- use Foo\Bar\{
- Foo,
- Bar,
- };
- $foo = [
- 'foo',
- 'bar',
- ];
复制代码
当新值需要被追加在此处时,尾部逗号便显得十分实用。在可变参函数例如 unset() 内,更是如此。
- unset(
- $foo,
- $bar,
- $baz,
- );
复制代码
同时,当你使用 compact() 函数给模版引擎传递一批变量时,也是个能用到的例子。
- echo $twig->render(
- 'index.html',
- compact(
- 'title',
- 'body',
- 'comments',
- )
- );
复制代码
在某些需要构造连续或分组数据情况下,经常要使用 array_merge() 函数合并数组。也可以利用尾部逗号:
- $newArray = array_merge(
- $arrayOne,
- $arrayTwo,
- ['foo', 'bar'],
- );
复制代码
同样,你也可以在调用任意方法、函数以及闭包时使用此特性。
- class Foo
- {
- public function __construct(...$args) {
- //
- }
- public function bar(...$args) {
- //
- }
- public function __invoke(...$args) {
- //
- }
- }
- $foo = new Foo(
- 'constructor',
- 'bar',
- );
- $foo->bar(
- 'method',
- 'bar',
- );
- $foo(
- 'invoke',
- 'bar',
- );
复制代码
|