首页 / 教程资源

PHP最新版本来了,有哪些新功能?

发布时间:2023-03-15 22:07:05

PHP8.2是PHP语言的重大更新,包含了很多新功能,包括:

1.移除动态属性

      PHP需要一个稳定的类型系统。动态属性违反了这条规则,这就是PHP不使用它们的原因。

从PHP 8.2开始,动态属性被弃用。上面的示例现在将抛出弃用警告。当您实现魔法__get()或__set()方法时,获取和设置对象的动态属性仍然有效。

2.字符串插值弃用

       字符串插值是一个很棒的功能,它允许您像这样"Hello there, {$name}"在字符串中使用变量。你也可以这样做"Hello there, ${name}"。尽管语法看起来几乎相同,但其行为却大不相同。由于这些语义差异和使用字符串插值缺陷,该功能在PHP 8.2发布时被弃用。

3.敏感参数

       在PHP 8.2,添加了一个属性SensitiveParameter,用于替换堆栈跟踪中的参数。

4.trait常量

       在PHP8.2之前,不允许将常量添加到trait中。这是一种语言差异,因为trait可以访问使用它们的类的常量。但是你不能严格地定义一个常量存在于一个类中,此问题已经在PHP 8.2修复。

5.PCRE非捕获改性剂

      PHP 8.2正则表达式扩展的一个小补充是no-capture修饰符,它只会捕获命名的捕获组。

6.随机扩展

      PHP 8.2内置一个新的扩展,它增加了一种更适合OOP的方式来处理随机数生成和其他随机化操作。添加一个类Randomizer启用此特性。您可以使用此特性来打乱字符串或者打乱一个数组,在指定的数值范围获取随机数。

7.只读类

      有时你想创建一个不可变DTO,它只包含只读属性。在这种情况下,您可以创建一个类并将所有属性定义为只读。这样做可能会非常耗时,每次添加新属性时,都应该记住将其设置为只读。PHP 8.2为这个问题引入了一个更好的解决方案。那就是只读类。使用只读类,您将类声明一次为只读,此刻起所有属性都将是只读的。

你不能创建扩展非只读类从只读类,也不可能给只读类添加静态属性,这将会导致致命错误

8.弃用语法

       PHP 8.2将弃用一些可调用的语法,因为它们不一致。这些语法可以与PHP8.2将弃用一些可调用的语法,因为它们不一致。这些语法可以与callable类型、函数is_callable()和call_user_func()一起使用。

奇怪的是,这些语法在某些情况下可以使用,但不能与这样的$callable()语法一起使用。

此外,这些语法是上下文相关的。self和后面的类型static可能会根据调用它们的位置而改变,这可能会在调用私有方法时导致意外行为。这就是为什么不推荐将它们与callable类型is_callable()和call_user_func()函数一起使用的原因。

9.重置内存峰值函数

      在PHP,可以测量峰值内存使用情况。以前不可能重置此峰值,因此不可能在第一个峰值之后测量第二个峰值。

在PHP 8.2添加memory_reset_peak_usage函数,允许您重置此内存峰值,以便您可以再次测量它。

10.mysqli::execute_query方法

       PHP 8.2为mysqli扩展添加一个新方法,允许您在一个方法中执行准备、绑定参数和执行SQL语句。

相关推荐