<p>为了保持在年底(11月底 - 12月初)发布新版本的习惯,PHP开发团队刚刚宣布发布第三个PHP 7功能更新,即PHP7.3。</p><p>在进一步说明之前,请记住PHP 5.x的生命周期结束时间是PHP 7.x之前的最后一个分支,计划于2018年12月31日结束,因此大约需要20天。在此日期之后,没有任何版本的PHP 5.x仍然可以从安全更新中受益,因为PHP 5.6(该分支的最新版本)也将从这些更新中切断。PHP社区已经知道了一段时间,但它似乎根本没有被提醒。</p><p>据W3Tech称,PHP的5.x版本目前(12月6日)使用PHP的75.6%的网站使用。78.9%的网站也使用PHP作为服务器端语言。这意味着大约60%的网站使用PHP 5.x并且可能在2018年12月31日之后公开。建议迁移到PHP 7.1+(PHP 7.0不再有安全更新)自12月3日起)。</p><p style="text-align: center;"><img src="/upload/content/20181211/1544536296954790.png" title="PHP开发团队刚刚宣布PHP7.3稳定版本发布!" width="550" height="290" alt="PHP开发团队刚刚宣布PHP7.3稳定版本发布!"/></p><p style="text-align: center;"><br/></p><p><strong>PHP 7.0到PHP 7.2</strong></p><p>从 PHP 7.0开始,已经添加了很多功能; 对于那些仍然使用PHP 5.x的人来说,这些功能可能很重要。</p><p>PHP 7.0带来的Zend Engine引擎性能提升速度是5.6版本的两倍,但也有许多改进和新功能。这些包括大大减少的内存使用,抽象语法树(AST),兼容的64位支持,异常层次结构的增强,许多“致命”错误转换为“例外”,随机数发生器(RNG)的安全,拆除旧的API服务器应用程序(SAPI)和扩展,以及那些不支持,凝聚空的操作(??)返回和标量声明,匿名类,零成本断言,</p><p>服务器端Web开发语言的7.1.0版本还伴随着新功能甚至性能提升:CPU密集型工作负载的速度提高了35%。关于PHP 7.1.0的新功能,这包括对可空类型的支持,引入返回类型void,表示函数不返回任何内容,一个新的伪类型类似于可调用的Iterable,添加支持指定常量可见性(public,protected和private),多捕获异常处理等等。</p><p style="text-align: center;"><img src="/upload/content/20181211/1544536296236367.png" title="PHP开发团队刚刚宣布PHP7.3稳定版本发布!" width="" height="" alt="PHP开发团队刚刚宣布PHP7.3稳定版本发布!"/></p><p>PHP 7.2.0作为主要新奇介绍的钠加密库已被整合到该语言的核心。该软件库允许加密,解密,签名,密码散列等。除了Sodium之外,PHP 7.2还带来了改进和新功能,例如在转换时将数字键转换为对象和表的能力,计算不可数对象,将HashContext作为对象,用于密码散列的Argon2算法,TLS常量的增强等。</p><p>PHP 7.3中的新功能与以前的更新一样,PHP 7.3.0附带了许多新功能和改进。其中最重要的是PHP 7.3使 Heredoc和 Nowdoc语法更加灵活。Heredoc和 Nowdoc语法是在PHP中声明字符串的四种方法之一。例如,对于 Heredoc语法,在<<<运算符之后,提供标识符,后跟新行。接下来是字符串本身,后跟相同的标识符以关闭表示法。结束标识符必须从该行的第一列开始。此外,标识符必须遵循与任何其他PHP标签相同的规则:它必须仅包含字母数字字符和下划线,并且必须以非数字字符或下划线开头。以下是使用Heredoc的示例。</p><p>PHP代码:</p><pre class="brush:php;toolbar:false"><?php class class foo { public $ bar = <<< EOT bar EOT ; } ?></pre><p>Nowdoc使用与Heredoc相同的<<<序列进行标识,但以下标识符由单引号括起。下面是使用Nowdoc的示例。</p><p>PHP代码:</p><pre class="brush:php;toolbar:false"><? class foo{ public $ bar = <<< ' EOT'EOT bar ; } ?></pre><p>要关闭链,直到PHP 7.2,您必须将标识符写入该行(粘贴左,没有缩进)。幸运的是,这种语法(Heredoc和Nowdoc)在PHP 7.3中更加灵活,并允许缩进结束标识符。</p><p>PHP代码:</p><pre class="brush:php;toolbar:false"><? class class foo{ public $ bar = <<< EOT bar EOT ; } ?></pre><p>还应注意,目前,新行必须遵循标记才能完成Heredoc / Nowdoc。,但PHP 7.3将改变它,并允许您在同一行完成Heredoc / Nowdoc。</p><p>PHP 7.3还允许在函数调用中结束逗号。在PHP中,可以在表格中的元素列表的末尾留下逗号。PHP 7.2将这种可能性扩展到分组命名空间。</p><p>PHP 7.3中,这些逗号将在函数声明中被允许。</p><p>PHP 7.3中还添加了新功能。例如,使用is_countable()函数就是这种情况。已有count()函数如果传递给它的参数不可枚举,则返回错误。在PHP 7.3中,引入了is_countable()函数以在执行计数之前验证该值是否可枚举。新版本的服务器端Web编程语言引入了两个新函数array_key_first()和array_key_last()来检索数组的第一个或最后一个键。</p><p>与其他新功能一样,请注意PCRE扩展已升级到PCRE2; 能够配置JSON扩展以在出错时抛出异常; 通过添加一个名为Argon2id的新推荐变体,改进了Argon2散列算法。</p><p>另请注意,PHP 7.3中不推荐使用的其他功能中不区分大小写的常量的弃用和删除。您可以在官方PHP网站上找到此版本中更改的详尽列表。</p>