PHP 在 2025 年:有哪些新变化?初学者完整指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

PHP 在 2025 年:有哪些新变化?初学者完整指南

\n\n

许多人认为 PHP 是一种过时的语言。然而,在 2025 年,PHP 不仅依然活跃,而且正在积极发展,吸收了其他语言的现代概念,并继续作为互联网上 77% 网站(包括 WordPress、Laravel 和 Symfony)的基础。在本文中,我们将分析 PHP 在 2025 年的主要创新,这些创新使其对初学者开发者来说更快、更安全、更方便。

\n\n

1. 纤程 (Fibers) — 轻量级并发

\n\n

PHP 最新版本的主要创新是纤程 (fibers)。它们允许编写异步代码,而无需复杂的回调函数或像 ReactPHP 这样的库。纤程是轻量级的执行流,可以暂停和恢复。

\n\n

它是如何工作的? 想象一下你在准备早餐:烧上水壶,在水烧开的同时切面包。纤程对代码做同样的事情。

\n\n
<?php\n// PHP 8.4+ 中的纤程示例\n$fiber = new Fiber(function(): void {\n    echo "纤程开始\\n";\n    Fiber::suspend(); // 暂停\n    echo "纤程继续\\n";\n});\n\necho "主线程\\n";\n$fiber->start(); // 启动\necho "启动之后\\n";\n$fiber->resume(); // 恢复\n?>\n
\n\n

输出:

\n
主线程\n纤程开始\n启动之后\n纤程继续\n
\n\n

对于初学者:纤程允许在不阻塞服务器的情况下同时执行多个任务。例如,并行处理多个 HTTP 请求或数据库查询。

\n\n

2. 改进的类型系统和只读属性

\n\n

2025 年的 PHP 对数据类型更加严格。这减少了错误数量,并使代码更清晰。

\n\n

只读属性

\n

只能在创建对象时设置一次的属性。尝试修改它们将引发错误。

\n\n
<?php\nclass User {\n    public readonly string $name;\n    public readonly int $age;\n\n    public function __construct(string $name, int $age) {\n        $this->name = $name;\n        $this->age = $age;\n    }\n}\n\n$user = new User("伊万", 25);\n// $user->name = "彼得"; // 错误!无法修改只读属性\n?>\n
\n\n

类型化参数和返回值

\n

现在不仅可以指定简单类型(int, string),还可以指定联合类型(通过 | 连接多个类型)。

\n\n
<?php\nfunction getDiscount(string|int $code): float|int {\n    if (is_string($code)) {\n        return 10.5; // 百分比\n    }\n    return $code; // 固定金额\n}\n\necho getDiscount("SUMMER"); // 10.5\necho getDiscount(500);      // 500\n?>\n
\n\n

为什么这对新手很重要? IDE(PhpStorm、VS Code)能更好地提示类型,错误在开发阶段就能被发现,而不是在生产环境中。

\n\n

3. 性能:JIT 编译器 2.0

\n\n

PHP 8.0 引入了 JIT(即时编译器),但在 2025 年它得到了显著改进。现在 PHP 代码在执行时被编译为机器码,对于繁重计算,速度提升可达 30-50%。

\n\n

速度对比(假设测试):

\n\n
<?php\n// 旧的慢速循环 (PHP 7.x)\n$start = microtime(true);\n$sum = 0;\nfor ($i = 0; $i < 1000000; $i++) {\n    $sum += sqrt($i);\n}\necho "时间: " . (microtime(true) - $start);\n?>\n
\n\n

在启用 JIT 的 PHP 2025 中,这段代码的执行速度快了 1.5 到 2 倍。对于 Web 应用程序,这意味着更快的页面加载速度和更少的服务器资源消耗。

\n\n

如何启用 JIT?

\n

在 php.ini 中添加:

\n
opcache.jit = tracing\nopcache.jit_buffer_size = 100M\n
\n\n

4. 数组和字符串操作的新功能

\n\n

PHP 2025 添加了一些语法糖,简化了日常任务。

\n\n

解构

博客

书籍推荐