为什么 PHP 8 会很棒

2025-06-07

为什么 PHP 8 会很棒

PHP 8 即将发布。这是一个重要的版本,它带来了重大的改变,但也保留了诸多优秀的功能。

免责声明

这是个人选择,而不是详尽的清单。

细节虽小,功能却很棒

再次强调,这不是一个详尽的列表,但一些变化将会对我们的日常 PHP 工作有所帮助。

::class可用于对象

您无需调用对象上的中介get_class(),而是可以直接执行此操作:

$myObject = new MyClass();
var_dump($myObject::class);
Enter fullscreen mode Exit fullscreen mode

来源

参数尾随逗号

在 PHP 7 中,您可以在数组中添加尾随逗号,如下所示:

$myArray = [ "pull", "push", "jump",];
Enter fullscreen mode Exit fullscreen mode

但是你不能用函数和方法的参数来实现这一点。在 PHP8 中,你可以!

new Uri(
    $scheme,
    $user,
    $pass,
    $host,
    $port,
    $path,
    $query,
    $fragment, // <-- Huh, this is allowed!
);
Enter fullscreen mode Exit fullscreen mode

来源

str_* 新魔法

我在rfc中读到过str_containsstr_starts_with()或者。比任何正则表达式都更简单、更好、更强大。str_ends_with()strpos

打破常规,赢得胜利

PHP 8 默认会抛出比 PHP 7 多得多的错误。PHP 8 之前弃用的所有内容都已被删除!

操作@

PHP 运算符的这个黑暗领主将不再沉默致命错误!!!

准备战斗

静态调用非静态方法的致命错误

下面的代码已经触发了一些错误,但是在 PHP 8 中,它将引发致命错误!

class MyClass {
    public function myMethod() {}
}
MyClass::myMethod();
Enter fullscreen mode Exit fullscreen mode

新的默认错误报告级别

E_ALL将是默认值。同样,不会再出现静默错误。

不要弄乱未定义的!

PHP 8 会将许多警告和通知转换为错误,例如:

  • 未定义变量
  • 除以零

JIT 免责声明

如果不庆祝 JIT 的诞生,就不可能撰写任何有关 PHP 8 的文章 \0/。

即时编译应该会在某种程度上提高性能。在 PHP 8 之前,PHP 通过将 PHP 代码转换为虚拟机运行的指令(~ 操作码)来执行代码。

JIT 编译器将 PHP 代码转换为 x86 机器代码,直接在 CPU 上运行。

然而,正如 Nikita Popov 所说,这对于涉及数学计算的代码而不是一般的代码来说意义重大。

不要期望获得与从 PHP 5 迁移到 PHP 7 相同的惊人效果。

杀手级功能

一些特征将具有决定性作用。

联合类型

在 PHP 8 之前,联合类型仅在 phpdoc 中可用:

/**
* @var int|float $number
*/
private $number;
Enter fullscreen mode Exit fullscreen mode

使用 PHP 8,您将编写:

private int|float $number
Enter fullscreen mode Exit fullscreen mode

这个想法是将更多类型信息从 phpdoc 移到函数签名中。虽然 void 在联合类型中不可用,但无论如何这都没什么意义。

来源

static返回类型

它将遵循与关键字相同的目的static。你的方法应该返回当前(~子)类中的某些内容,而不是父类中的内容。

class MyClass { 
    public function myMethod(): static { 
        return new static(); 
    } 
}
Enter fullscreen mode Exit fullscreen mode

惊人的!

Throw作为表达式

从语句转换Throw为表达式将允许在 PHP 8 中进行以下用法:

$condition || throw new Exception();
Enter fullscreen mode Exit fullscreen mode

来源

Throw喜欢使用箭头函数或三元函数的想法。

结论

PHP 8 更好、更快、更强大。迫不及待地想用它了。它看起来是 PHP 迈向类型安全编程语言的第一步。

文章来源:https://dev.to/spo0q/why-php-8-will-be-awesome-2lif
PREV
通过构建简单的聊天应用程序学习 WebSockets
NEXT
Python 专业技巧