PHP 7.2.0 的新特性和改进特性
已发表: 2018-03-03PHP 7.2.0 的新版本包括许多很棒的附加功能。 它提供了更多特性、新改进和更好的功能。 它使用户能够编写更好的代码并以前所未有的方式使用多种有趣的语言功能。 在这篇文章中,我们将着眼于 PHP 最新迭代中引入的最新方面。
此更新提供了许多新的改进。 它具有许多功能,可确保更好的编码。 PHP 7.2.0 中的新特性包括:
- 对象输入提示
- 各种不可数物体的计数
- 数组强制转换/对象中数字键的转换
- 删除了 Mcrypt 扩展
- 密码哈希中的 Argon2
- HashContext 作为对象
- 更好的 TLS 常数到各种健全的值
- 新的钠延伸
众所周知,Web 开发人员通常喜欢或讨厌使用 PHP 语言。 任何真正喜欢使用 PHP 的人一定会喜欢这种新的编码解决方案。
如果您是一名喜欢使用 PHP 的 Web 开发人员,请继续阅读我们讨论 PHP 7.2.0 更新中最重要的新特性。
PHP 7.2.0 中的核心改进
以下是 PHP 最新更新中的一些核心改进。
Trait 属性错误的解决方案
在 PHP 7.2.0 发布之前,存在一个未修复的 trait 属性错误。 在最新的更新中,如果一个 trait 定义了一个属性,一个类不能定义一个具有相同名称的属性,除非它更兼容(相同的初始值和可见性)。 否则,它会发出致命错误。
因此,与 PHP 7 和 PHP 7.1 不同,我们现在可以预期会收到一个致命错误。 此行为已在最近的 PHP 更新中得到修复,现在它的工作方式与 PHP 文档中所说的一样。 现在您可以进行严格的比较。 当您在 PHP 7.2 中运行脚本时,您将收到一个致命错误的通知。
返回类型声明
PHP 7 的最新更新增加了对返回类型声明的进一步支持。 就像参数类型声明一样,这个声明类型也声明了可能从函数返回的值的类型。 对于返回类型声明,提供与参数类型声明相同的类型。
在 PHP 7.2.0 中,用户可以根据对象数据类型使用返回类型声明。
此外,严格类型也会对返回类型声明产生影响。 考虑到默认的弱模式,所有返回的值都被强制转换为准确的类型(如果它们不同并且还不是该类型)。 但是,在强模式下,所有返回的值都必须是准确/正确的类型。 否则,会收到TypeError 。
但是,当您覆盖父方法时,子方法应将返回类型声明与父方法的返回类型声明相匹配。 但是如果父方法没有定义返回类型,那么子方法可以定义它。
生成器返回表达式
PHP 的这一特性建立在 PHP 5.5 中发布的称为生成器功能的功能之上。 它允许在生成器中使用 return 语句并允许返回最终表达式。 但是,通过引用返回是受限制的。 该值可以通过使用新的生成器“ getReturn()”方法获得,该方法仅在生成器完成产生值时使用。
尽管如此,使用生成器清楚地返回最终值的能力绝对是一种方便的能力。 这是因为它允许生成器完全返回最终值,这可以由执行生成器的客户端代码特别处理。 相比之下,这比强制客户端代码首先检查是否产生最终值然后特别处理该值要简单得多。
会话选项
Session_start()现在可以识别许多选项,这些选项会覆盖 php.ini 中设置的各种会话配置指令。
这些选项也被扩展以方便session.lazy_write,它默认保持打开状态,并使 PHP 仅通过更改会话数据和read_and_close覆盖任何会话文件。 这是一个选项,只能传递给session_start()以确认必须读取会话数据,然后必须立即关闭会话,同时保持不变。
PHP 7.2.0 中的安全改进
以下是最近在 PHP 7.2.0 中实现的安全改进。
密码哈希中的 Argon 2 算法
Argon 2 是 2005 年密码哈希竞赛的获胜者,是一种强大的哈希算法。 Argon2 正在被公认为通用互联网标准。 目前,该算法被认为比另一种哈希算法 Bcrypt 更具成本效益和安全性。 新加入的 Argon2 可以通过函数password_hash() 使用。
虽然 Bcrypt 只考虑了一个成本因素,但新的 Argon2 考虑了以下三个成本因素 -
- 时间成本——定义散列算法的迭代次数
- 内存成本- 定义在散列期间必须使用的 KiB 数。
- 并行度因子- 设置在散列期间将消耗的并行线程数。
默认成本因子由三个新常量定义,如下所示:
- PASSWORD_ARGON2_DEFAULT_TIME_COST
- PASSWORD_ARGON2_DEFAULT_MEMORY_COST
- PASSWORD_ARGON2-DEFAULT-THREADS
Lib-sodium 取代 Mcyrpt
PHP 7.2.0 的另一个主要改进是从 PHP 核心中删除了传统的 Mcrypt 加密库并添加了 Libsodium。
Mcrypt 被认为是废弃软件,是对语言发展的限制。 这就是它在 PHP 7.2.0 中被 Libsodium 取代的原因。 Libsodium 是一个高级密码库,它提供真实的加密以及高效的椭圆曲线密码。
Libsodium 由精心挑选的算法组成,这些算法由安全专家实施,以防止侧通道漏洞。 换句话说,Libsodium 是一个跨语言和跨平台的库,用于解密、加密、密码散列、签名等。
已弃用的特性和功能
以下是 PHP 7.2.0 的一些不推荐使用的功能和特性,预计在 PHP 8.0 发布之前将被删除。
Gmp_random()被视为依赖于平台的功能,可能会被弃用。 相反,将使用gmp_random_rage()和gmp_random_bits() 。
(未设置)强制转换是另一个通常返回 null 的表达式,因此被认为是无用的。
Each()用于像数组一样迭代foreach() ,但foreach()是首选,因为它的速度更快。
PHP 5.1 中的spl_autoload_register取代了_autoload函数。 但是现在在编译过程中遇到函数时很可能会发生弃用。
mbstring .fucc_overload也被设置为弃用。
assert()函数确认给定的断言并在结果为FALSE时采取适当的措施。 将不推荐使用带有字符串参数的 assert(),因为它会导致 RCE 漏洞。
$php_errormsg变量在接收到非致命错误时在本地范围内构建。 但现在,随着 PHP 7.2.0 的发布,将使用error_clear_last和error_get_last 。
$errcontext 可能会被弃用,因为此功能会导致优化问题。 由于 $errcontext 用于修改当前范围内的所有对象和引用,因此几乎不使用此功能。
Create_function()有很多安全问题。 此外,它还存在内存使用和性能不佳的问题。
为什么 WordPress 开发人员应该使用 PHP 7.2.0?
最近对 PHP 的升级带来了新的功能和改进的安全措施。 这可能包括现代密码学、核心功能的添加以及各种站点的更快加载速度等因素。
使用 PHP 的好处
PHP 是一种高度兼容的语言,几乎可以与所有数据库和服务器全球标准(即 PostgreSQL、MySQL、Sybase、Oracle、Microsoft SQL Server 和 Informix)一起使用。 它提供由开源社区支持的快速性能。
它用于多种用途,例如生成文件和动态页面。 PHP 使您能够在站点数据库中管理和存储信息。 它允许用户使用安全功能加密数据并限制对网站的未经授权的访问。
PHP 被许多知名网站使用,例如Yahoo、Facebook 和 Wikipedia。
更重要的是,PHP 7.2.0 的最新更新提供了重要的安全改进、令人兴奋的新功能和性能增强。
PHP 7.2.0 的性能
根据 Phoenix 基准测试,PHP 7.2.0 比 7.1 快 13%,比 7.0 快近 20%。 与 PHP 2.6(40% 的 PHP 用户仍在使用)相比,它快了近 25%。
有许多测试支持这些统计数据和发现。 官方 PHP 基准测试显示 PHP 7 的效率是 5.6 的两倍,速度是 5.6 的两倍。 PHP 7 有一半的延迟。 此外,Kinsta 等其他基准测试表明 PHP 7 的速度可能比以前的版本快三倍。
如上所述,PHP 7.2.0 性能提高的主要原因是包含高级特性和弃用旧函数。 这正是使这个版本的 PHP 非常适合 WordPress 用户的原因。 但是,开发人员必须检查代码并更新已弃用的功能,以确保一切都兼容。
PHP 7.2.0 的安全支持
PHP 7.2.0 不再提供安全支持。 但是,关键支持将在 2018 年底之前提供。PHP 社区不再为小问题和错误提供支持。 好消息是 PHP 7.2.0 的最新更新将确保高级安全更新正常工作,并且该项目将得到 PHP 社区的持续支持。
Libsodium 是从旧 PHP 迁移到 PHP 7.2.0 的最重要和最改进的特性。 幸运的是,Libsodium 很容易更新。
如果您计划更新到 PHP 7.2.0,请确保您的代码包含集成和单元测试。 此类测试将有助于在任何与应用程序相关的问题出现在实际环境中之前发现它。
简而言之
与以前的版本(例如 PHP 5.6)相比,PHP 7.2.0 绝对是一个重大升级。 当您将代码从 PHP 5.6 升级到 PHP 7 时,您可能会在代码所依赖的库和代码本身中遇到一些不兼容问题。 然而,采用 PHP 7.2 的好处将使您的努力变得值得。
由于 PHP 7.2 比旧版本的 PHP 快得多,这允许用户通过实现 PHP 语言的高级代码为他们的网站用户提供改进的服务。
那么您准备好切换到新的 PHP 7.2 了吗? 如果您还没有更新它,那么现在是开始过渡的好时机。 是时候检查代码并升级您的脚本了。
在下面的评论部分告诉我们您是如何发现 PHP 7.2.0 的新改进特性和功能的!