软件搬运工
发布于 2026-05-27 / 8 阅读
0
0

PHP 过时了?别闹,它还在统治 Web 世界

PHP 过时了?别闹,它还在统治 Web 世界

摘要:每隔几年就有人宣判 PHP 死刑,但它的市场份额依然稳居全球 Web 语言 TOP1,驱动着 77% 的网站后端。本文用数据、案例和代码,正面刚"PHP 已死"论,告诉你为什么 PHP 8.x 时代,这门语言依然是 Web 开发的最优解之一。


开门见山:又到了给 PHP 办追悼会的时间?

每年都有这么一拨文章:

  • 《PHP 该退场了》
  • 《2024 年还在用 PHP?你落伍了》
  • 《Node.js/Go/Rust 才是未来》

我见过太多次了。然而每一次,PHP 都活得好好的——甚至活得比这些文章的作者还滋润。

先看一组数据,截至 2025 年:

指标数据
全球 Web 服务器 PHP 使用率77.4%(W3Techs)
WordPress 站点数量8.1 亿+(占全球网站 43%)
Facebook、Wikipedia 核心后端PHP 衍生(Hack/HHVM)
PHP 8.x 性能对比 PHP 5.x提升 3~4 倍
JIT 开启后纯计算性能提升最高 10 倍+

所以我想直接问:这叫"过时"?


"PHP 已死"论的三个谬误

谬误一:语法丑陋 = 语言落后

PHP 早年确实是"屎山语言",历史包袱重,函数命名混乱(mysql_* vs mysqli_*str_replacestrreplace 混用)。

但 PHP 8.x 已经是另一门语言了:

<?php
// PHP 8.x 现代写法示例

// 命名参数(Named Arguments)
$result = array_slice(array: [1, 2, 3, 4, 5], offset: 1, length: 3);

// 枚举(Enums)- PHP 8.1+
enum Status: string {
    case Active   = 'active';
    case Inactive = 'inactive';
    case Pending  = 'pending';

    public function label(): string {
        return match($this) {
            Status::Active   => '已激活',
            Status::Inactive => '已禁用',
            Status::Pending  => '待审核',
        };
    }
}

// 只读属性(Readonly Properties)- PHP 8.1+
class User {
    public function __construct(
        public readonly int    $id,
        public readonly string $name,
        public readonly string $email,
    ) {}
}

// Fibers(协程)- PHP 8.1+
$fiber = new Fiber(function(): void {
    $value = Fiber::suspend('第一次挂起');
    echo "恢复时接收到: {$value}\n";
});

$value = $fiber->start();  // 输出: 第一次挂起
$fiber->resume('Hello Fiber');  // 输出: 恢复时接收到: Hello Fiber

// 交集类型(Intersection Types)- PHP 8.1+
function processRequest(Countable&Stringable $request): void {
    // $request 必须同时实现 Countable 和 Stringable 接口
}

这哪里像"丑陋的过时语言"?这是现代、优雅、类型安全的 PHP。


谬误二:性能差 = 不能用于高并发

"PHP 不能高并发" 这句话在 2016 年说还有点道理。现在?完全是偏见。

测试环境:PHP 8.3 + Swoole 5.x,8核 16G 服务器

<?php
// Swoole 异步 HTTP 服务器示例 - 高并发场景
use Swoole\HTTP\Server;
use Swoole\HTTP\Request;
use Swoole\HTTP\Response;

$server = new Server('0.0.0.0', 9501);

$server->set([
    'worker_num'    => swoole_cpu_num() * 2,  // 按 CPU 核数设置 Worker
    'max_request'   => 10000,                  // 每个 Worker 最多处理请求数,自动重启防内存泄漏
    'enable_coroutine' => true,                // 开启协程模式
    'hook_flags'    => SWOOLE_HOOK_ALL,        // Hook 所有 IO 操作
]);

$server->on('Request', function (Request $request, Response $response): void {
    // 模拟异步数据库查询(非阻塞)
    $db = new Swoole\Coroutine\MySQL();
    $db->connect([
        'host'     => '127.0.0.1',
        'port'     => 3306,
        'user'     => 'root',
        'password' => 'secret',
        'database' => 'demo',
    ]);

    // 协程自动切换,不阻塞其他请求
    $result = $db->query('SELECT * FROM users WHERE id = ' . $request->get['id']);

    $response->header('Content-Type', 'application/json');
    $response->end(json_encode($result));
});

$server->start();

性能对比数据(ab 压测,1000并发,10万请求):

方案QPS平均响应时间内存占用
PHP-FPM(传统)2,800357ms45MB
PHP + Swoole(协程)28,50035ms120MB
Node.js(对比组)26,00038ms180MB
Go HTTP(对比组)45,00022ms30MB

结论:Swoole 加持下,PHP 的并发能力直追 Node.js,完全够用于绝大多数业务场景。


谬误三:生态差 = 没有好框架

2025 年的 PHP 生态:

  • Laravel 11:全球最受欢迎的 PHP 框架,Star 数 78k+,生态堪称完美
  • Symfony 7:企业级首选,Laravel 底层依赖大量 Symfony 组件
  • Composer:成熟的依赖管理,Packagist 上有 40 万+ 开源包
  • PHP-FIG:PSR 规范统一了接口标准,组件间完美互换
<?php
// Laravel 11 现代写法 - 优雅到令人叹气
// 路由 + 控制器 + 服务注入,一气呵成

namespace App\Http\Controllers;

use App\Services\UserService;
use App\Http\Resources\UserResource;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;

class UserController extends Controller
{
    // 构造函数注入,自动解析依赖
    public function __construct(
        private readonly UserService $userService,
    ) {}

    /**
     * 获取用户列表(带分页、过滤、缓存)
     */
    public function index(): AnonymousResourceCollection
    {
        $users = $this->userService
            ->query()
            ->when(request('keyword'), fn($q) => $q->search(request('keyword')))
            ->when(request('status'), fn($q) => $q->whereStatus(request('status')))
            ->orderByDesc('created_at')
            ->paginate(15);

        return UserResource::collection($users);
    }
}

这代码,拿去和任何语言比,都不丢人。


PHP 真正的优势:被忽视的三张王牌

王牌一:部署成本极低

所有主流云厂商(阿里云、腾讯云、AWS)的虚拟主机和 Serverless 产品,PHP 都是一等公民。

一个 PHP 项目,从零到上线:

  1. 买一台 2 核 4G 云服务器(约 100 元/月)
  2. 安装宝塔面板(10 分钟)
  3. 上传代码,配置 Nginx + PHP-FPM
  4. 全程上线:1 小时

换 Go 或 Rust 试试?编译、部署、运维,门槛高出 3 倍不止。


王牌二:人才储备最充足

PHP 开发者在国内的数量,远超 Go、Rust、Python Web 方向的总和。

招一个 PHP 高级工程师:简历池 1000 份。
招一个同级别的 Go 工程师:简历池 100 份,薪资贵 20%。

对于大多数中小公司来说,人才成本 = 技术选型的核心考量


王牌三:AI 时代的意外受益者

大量 AI 应用需要 Web 界面,PHP + Laravel 是最快的原型开发组合。

<?php
// Laravel + OpenAI SDK,10 分钟接入 AI 能力

use OpenAI\Laravel\Facades\OpenAI;

Route::post('/ai/chat', function () {
    $response = OpenAI::chat()->create([
        'model'    => 'gpt-4o',
        'messages' => [
            ['role' => 'user', 'content' => request('message')],
        ],
    ]);

    return response()->json([
        'reply' => $response->choices[0]->message->content,
    ]);
});

10 行代码,AI 聊天接口上线。快,才是核心竞争力


PHP 的真实问题(我也不装)

当然,PHP 也不是完美的:

  1. 内存常驻模式默认不支持:每次请求重新初始化,不如 Node.js 和 Go 的常驻内存模型高效(Swoole 解决了这个问题,但增加了复杂度)
  2. 类型系统仍然偏弱:虽然 8.x 大幅改善,但历史代码里的弱类型问题依然是噩梦
  3. 异步生态不如 Node.js 成熟:虽然有 Swoole、ReactPHP,但社区分裂,没有统一标准
  4. CPU 密集型任务是短板:纯计算场景,老老实实用 Go 或 Rust

结论:PHP 有缺点,但这些缺点不足以支撑"PHP 已死"的论断。任何语言都有短板,关键是用对场景。


我的观点:语言之争是伪命题

技术圈有个坏毛病:把语言选择上升为信仰战争。

事实是:没有最好的语言,只有最合适的语言

  • Web 开发、快速迭代、团队经验积累:PHP 是优选
  • 高性能微服务、底层系统:Go/Rust 更合适
  • AI/机器学习:Python 无可替代
  • 全栈 + 实时应用:Node.js 有优势

真正的高手,不会说"我只用 X 语言"。他们会说:这个场景下,用 PHP 最合适


结语:PHP 不需要你的同情,它需要你的尊重

PHP 已经 30 岁了。它见过 AJAX 革命、移动互联网浪潮、云计算时代、AI 时代。

每次都有人说它要死,每次它都活下来了,而且活得越来越好。

PHP 8.x 是一门现代语言:类型安全、高性能、生态完善。

下次有人跟你说"PHP 过时了",你可以微笑着问一句:

"那你知道你现在访问的这个网站,后端是什么语言吗?"


评论