强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

PHP 完全指南 / 第 1 章 — PHP 简介

第 1 章 — PHP 简介:历史、版本演进与适用场景

1.1 PHP 是什么

PHP(全称 PHP: Hypertext Preprocessor)是一种广泛使用的开源服务端脚本语言,特别适合 Web 开发。它可以嵌入 HTML 中,也可以作为独立的命令行工具运行。

<?php
echo "Hello, PHP!";

PHP 代码通常写在 <?php ... ?> 标签内,但现代 PHP 实践中,纯 PHP 文件建议省略闭合标签 ?>,以避免尾部空白导致的 headers already sent 错误。


1.2 PHP 发展历史

年份 里程碑 说明
1994 PHP/FI Rasmus Lerdorf 创建,最初用于跟踪访客
1997 PHP 3 Zeev Suraski 和 Andi Gutmans 重写核心
2000 PHP 4 引入 Zend Engine 1.0
2004 PHP 5 引入真正的 OOP、PDO、异常处理
2015 PHP 7 引入 Zend Engine 3.0,性能翻倍
2020 PHP 8.0 JIT 编译器、Union Types、Attributes、Named Arguments
2021 PHP 8.1 Enums、Fibers、Intersection Types、readonly
2022 PHP 8.2 Disjunctive Normal Form (DNF) Types、Readonly Classes
2023 PHP 8.3 类型化类常量、json_validate()#[Override]
2024 PHP 8.4 Property Hooks、Asymmetric Visibility、new 不再需要括号

1.3 PHP 8.x 现代特性速览

1.3.1 JIT 编译器

PHP 8.0 引入了 Just-In-Time (JIT) 编译器。它将频繁执行的热点代码编译为机器码,显著提升 CPU 密集型任务的性能。

# php.ini 配置
opcache.enable=1
opcache.jit=1255
opcache.jit_buffer_size=64M

注意:JIT 对 Web 请求的提升有限(因为请求生命周期短),主要受益于长时间运行的 CLI 任务和数学计算。

1.3.2 Union Types(联合类型)

<?php
function formatId(int|string $id): string
{
    return "ID: {$id}";
}

echo formatId(42);        // 输出: ID: 42
echo formatId("abc-123"); // 输出: ID: abc-123

1.3.3 Named Arguments(命名参数)

<?php
// 传统写法
str_replace('old', 'new', $string);

// 命名参数写法 — 可跳过默认参数,提高可读性
htmlspecialchars($string, double_encode: false);

1.3.4 Match 表达式

<?php
$status = 404;
$message = match ($status) {
    200 => 'OK',
    301 => 'Moved Permanently',
    404 => 'Not Found',
    500 => 'Internal Server Error',
    default => 'Unknown Status',
};
echo $message; // 输出: Not Found

1.3.5 Enums(枚举)

<?php
enum Suit: string
{
    case Hearts   = 'hearts';
    case Diamonds = 'diamonds';
    case Clubs    = 'clubs';
    case Spades   = 'spades';
}

$card = Suit::Hearts;
echo $card->value; // 输出: hearts

1.3.6 Fibers(纤程)

<?php
$fiber = new Fiber(function (): void {
    $value = Fiber::suspend('fiber started');
    echo "Resumed with: $value\n";
});

$result = $fiber->start();
echo "Fiber says: $result\n";
$fiber->resume('hello');

1.4 PHP 适用场景

场景 说明 代表项目
Web 应用开发 最传统场景,CMS、电商平台 WordPress, Magento
RESTful API JSON API 后端 Laravel, Symfony
命令行工具 (CLI) 脚本、任务调度、数据迁移 Artisan Commands
队列/异步任务 配合 Laravel Horizon, Swoole 队列消费者
微服务 使用 Swoole/Hyperf 高性能框架 Hyperf, Swoft
内容管理系统 (CMS) WordPress 市占率 43%+ WordPress, Drupal
电子商务 在线商城、支付集成 WooCommerce, Shopify

不太适合的场景

  • 实时应用(WebSocket 长连接需要 Swoole/OpenSwoole)
  • 桌面 GUI(没有原生 GUI 库)
  • 嵌入式/IoT(内存占用较高)
  • 科学计算(Python 生态更成熟)

1.5 PHP 与其他语言对比

特性 PHP Python Node.js Go
学习曲线 ⭐⭐ 低 ⭐⭐ 低 ⭐⭐⭐ 中 ⭐⭐⭐⭐ 高
Web 框架成熟度 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐
并发模型 进程/Fiber asyncio 事件循环 goroutine
类型系统 渐进式 动态 动态 (TS 渐进) 静态
包管理器 Composer pip npm go mod
主要宿主环境 Web Web/数据/ML Web/CLI CLI/服务

1.6 PHP 生态系统概览

┌─────────────────────────────────────────────────────┐
│                   PHP 生态系统                        │
├──────────────┬──────────────┬───────────────────────┤
│   包管理      │   框架       │   工具链               │
│   Composer   │   Laravel    │   PHPUnit              │
│   Packagist  │   Symfony    │   PHPStan              │
│              │   Slim       │   PHP-CS-Fixer         │
├──────────────┼──────────────┼───────────────────────┤
│   数据库      │   模板引擎    │   服务器               │
│   Doctrine   │   Blade      │   PHP-FPM              │
│   Eloquent   │   Twig       │   Swoole               │
│   Laravel DB │   Livewire   │   RoadRunner           │
├──────────────┼──────────────┼───────────────────────┤
│   API        │   测试       │   部署                  │
│   API Platform│  Pest       │   Docker               │
│   Lumen      │   Mockery    │   Laravel Forge        │
│   Fractal    │   Behat      │   Kubernetes           │
└──────────────┴──────────────┴───────────────────────┘

1.7 业务场景:为什么选择 PHP

场景 1:快速构建 MVP

创业团队需要在 2-4 周内发布产品原型。Laravel 提供开箱即用的认证、ORM、队列、缓存,配合 Composer 的海量包,可以极快地搭建功能。

场景 2:内容驱动网站

WordPress 全球市占率超过 43%,拥有庞大的插件和主题生态。对于博客、企业官网、新闻站点,PHP 是首选。

场景 3:电商系统

Magento、WooCommerce、PrestaShop 等成熟的电商解决方案都基于 PHP,提供了完整的产品管理、支付、物流能力。


1.8 扩展阅读


下一章第 2 章 — 环境安装:PHP、Composer 与 IDE 配置