php版本变迁历史

本文详细回顾了PHP从1994年至今的发展历程,介绍了各版本的重要更新,如面向对象支持、命名空间、闭包等特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PHP 版本详细变迁历史

1. PHP 1.x & 2.x (PHP/FI) (1995 - 1997)
发布时间: 1995年 (PHP 1.0), 1997年 (PHP 2.0 / PHP/FI)
核心开发者: Rasmus Lerdorf
主要特性:
* PHP 1.0 (Personal Home Page Tools): 最初是一组简单的 Perl 脚本,用于跟踪 Rasmus Lerdorf 的在线简历访问情况,功能非常基础。
* PHP 2.0 (PHP/FI - Forms Interpreter): 用 C 语言重写,增加了对数据库(如 mSQL)的支持和表单处理能力。开始具备构建简单动态网页的能力。
* 语法与 Perl 类似,但功能有限。
结束支持: 早已终止,无官方维护。
说明: 这是 PHP 的诞生和雏形阶段,奠定了其作为服务器端 Web 脚本语言的基础。

2. PHP 3 (1998)
发布时间: 1998年6月
核心开发者: Rasmus Lerdorf, Andi Gutmans, Zeev Suraski
主要特性:
完全重写: Andi Gutmans 和 Zeev Suraski 为了开发电子商务应用,重写了底层解析器。
名称变更: 正式更名为 “PHP: Hypertext Preprocessor”,体现了其更广泛的用途。
模块化设计: 引入了可扩展的模块化架构,方便第三方开发者编写扩展(数据库、加密、XML等)。
平台支持: 首次支持广泛的 Unix 和 Windows 平台。
语法增强: 引入了更强大、更一致的语法。
对象支持 (初级): 提供了非常基础的面向对象编程能力(非主流)。
结束支持: 早已终止,无官方维护。
意义: PHP 3 是 PHP 真正流行起来的起点,模块化设计是其成功的关键,吸引了大量开发者。

3. PHP 4 (2000)
发布时间: 2000年5月
核心引擎: Zend Engine 1.0 (由 Zeev Suraski 和 Andi Gutmans 开发,Zend 名称来源于两人名字组合)
主要特性:
性能提升: Zend Engine 带来了显著的性能改进。
Web 特性增强:
* HTTP Sessions 支持 (session_start()$_SESSION)。
* 输出缓冲 (ob_start()ob_flush())。
* 更强大的 HTTP 协议支持。
新语言特性:
foreach 循环语法改进。
* 引入引用 (&)。
* 布尔类型 TRUE/FALSE 常量。
扩展增强: 标准库扩展大量增加并改进。
安全性改进: 引入了 open_basedirsafe_mode (虽然后来证明问题多) 等安全相关的配置选项。
结束支持: PHP 4.4.9 是最终版本,官方支持于 2008年8月8日 终止。
说明: PHP 4 是 PHP 成为主流 Web 开发语言的标志性版本,统治了 Web 开发领域多年。但其对象模型是“对象变量”而非真正的对象引用,存在根本缺陷。

4. PHP 5 (2004)
发布时间: 2004年7月 (PHP 5.0)
核心引擎: Zend Engine 2.0
主要特性 (划时代变革 - 面向对象):
全新的对象模型 (OOP):
* 对象通过句柄(Handle)传递,实现真正的面向对象引用。
* 完整的访问控制修饰符: publicprotectedprivate
* 抽象类 (abstract) 和接口 (interface)。
* 析构函数 (__destruct())。
* 对象克隆 (__clone())。
* 异常处理 (trycatchthrow)。
PDO (PHP Data Objects): 轻量级、一致性的数据库访问抽象层,支持多种数据库。
XML 增强: 集成了更强大的 XML 支持 (SimpleXML, DOM, XSLT)。
SOAP 扩展: 支持 Web Services。
SQLite 集成: 内置轻量级数据库引擎。
迭代器 (Iterator) 和 SPL: 提供了更强大的对象遍历和标准数据结构接口。
重要子版本更新:
PHP 5.1 (2005): PDO 成为默认扩展,性能改进。
PHP 5.2 (2006): JSON 支持 (json_encodejson_decode),Filter 扩展,时区处理改进。
PHP 5.3 (2009 - 重大更新):
命名空间 (Namespaces): 解决代码命名冲突的核心机制。
延迟静态绑定 (static::): 允许在继承范围内引用静态调用的类。
闭包 / Lambda / 匿名函数: (function(...) use (...) { ... })。
跳转标签 (goto): (需谨慎使用)。
NOWDOC / HEREDOC 改进: 支持静态解析。
PHP 归档 (Phar): 将 PHP 应用打包成单个文件。
MySQLnd (MySQL Native Driver): 替代 libmysql 的纯 PHP 驱动 (性能更好,内存占用更少)。
PHP 5.4 (2012):
内置 Web 服务器: php -S localhost:8000
Traits: 代码复用机制,解决单继承限制。
短数组语法: [] 替代 array()
函数返回数组解引用: foo()[0]
二进制直接量: 0b1101
$_SESSION 上传进度支持。
移除了 register_globalsmagic_quotessafe_mode 等不安全的遗留特性。
PHP 5.5 (2013):
生成器 (yield) 和协程: 简化迭代器创建,支持轻量级协程。
finally 关键字: 异常处理的清理块。
foreach 支持 list() foreach ($array as list($a, $b))
empty() 支持表达式: empty($foo->bar)
密码哈希 API: password_hash()password_verify() (安全存储密码的推荐方式)。
常量引用 ClassName::class 获取类的完全限定名称。
PHP 5.6 (2014):
常量标量表达式: const TWO = ONE * 2;
变长参数 (...) 和参数解包 (...$args): function sum(...$numbers)
** 幂运算符: 2 ** 3 = 8
use function 和 use const 导入函数和常量。
__debugInfo() 魔术方法: 控制 var_dump() 输出。
GMP 运算符重载: 使 GMP 数学操作更直观。
phpdbg 内置的交互式调试器。
结束支持: PHP 5.6 是 5.x 系列的最终版本,其官方安全支持于 2018年12月31日 终止。强烈建议不再使用任何 PHP 5.x 版本!
说明: PHP 5 确立了 PHP 作为现代编程语言的地位,尤其是强大的 OOP 支持使其能够构建大型复杂应用。5.3 和 5.4 是里程碑式的子版本。

5. PHP 7 (2015)
发布时间: 2015年12月 (PHP 7.0) - 跳过了计划中的 PHP 6 (Unicode 重写失败的项目)
核心引擎: Zend Engine 3.0
主要特性 (性能革命):
性能飞跃: 平均比 PHP 5.6 快 2 倍以上,大幅降低服务器资源消耗。这是升级的最大动力。
标量类型声明: function sum(int $a, int $b): int { ... } (支持 intfloatstringbool)。
返回类型声明: function getName(): string { ... }
空合并运算符 (??): $username = $_GET['user'] ?? 'nobody'; (简化 null 值检查)。
太空船运算符 (<=>): $a <=> $b (用于比较和排序)。
匿名类: new class { ... } (用于一次性实现接口或扩展类)。
Unicode 码点转义语法: "\u{1F602}" (😂)。
Closure::call() 更高效地临时绑定闭包到对象并调用。
过滤的 unserialize() 提高反序列化安全性。
预期 (assert) 增强: 支持预期异常。
use 分组声明: use Some\Namespace\{ClassA, ClassB, ClassC as C};
生成器委托 (yield from): 简化生成器嵌套。
整数除法函数: intdiv()
移除大量过时扩展和 SAPIs: 如 mysql 扩展 (强制使用 mysqli 或 PDO), ereg 扩展 (强制使用 preg)。
重要子版本更新:
PHP 7.1 (2016):
可为空 (Nullable) 类型: ?Type 表示参数或返回值可以是 Type 或 null
void 返回类型: 表示函数不返回任何值。
类常量可见性: publicprotectedprivate
可迭代的伪类型: iterable (表示 array 或 Traversable)。
多异常捕获: catch (ExcType1 | ExcType2 $e)
list() 支持键名: list('id' => $id, 'name' => $name) = $data;
负字符串偏移支持: $str[-1]
PHP 7.2 (2017):
object 类型: 参数/返回值可以声明为 object
通过 count() 参数类型: 必须是 Countable | array
扩展的 password_hash() 算法: Argon2。
sodium 扩展 (核心): 现代密码学库。
Libsodium 成为核心扩展。
弃用 __autoload() 强制使用 spl_autoload_register()
弃用不带括号的 create_function() 鼓励使用匿名函数。
PHP 7.3 (2018):
灵活的 Heredoc/Nowdoc 结束标记: 允许缩进,结束标记不再需要单独一行。
array_key_first()array_key_last() 获取数组的首/尾键名。
is_countable() 检查变量是否可被 count()
gc_mem_caches() 强制回收垃圾收集器内存缓存。
PCRE2 迁移: 使用更新的正则表达式库。
JSON 错误处理改进: JSON_THROW_ON_ERROR 选项。
弃用大小写不敏感的常量: 影响 TRUE/FALSE/NULL
在 compact() 中未定义变量抛出 Notice。
PHP 7.4 (2019):
箭头函数 (fn() => ...): 更简洁的匿名函数语法。
类型属性: public int $id; (类属性支持类型声明)。
预加载 (Opcache Preloading): 显著提升框架驱动的应用性能 (需配合 Opcache)。
弱引用 (WeakReference): 允许引用对象而不阻止其被垃圾回收。
协变返回和逆变参数: 放宽子类方法重写时的类型规则。
数组解包操作符扩展 (...): 支持数字键数组 ($arr = [...$arr1, ...$arr2];)。
__serialize() / __unserialize() 魔术方法: 替代 __sleep()/__wakeup() 用于更可控的序列化。
mb_str_split() 按字符数分割多字节字符串。
strip_tags() 支持数组标签名。
三元运算符弃用左结合性: 1 ? 2 : 3 ? 4 : 5 行为改变(需加括号)。
移除 php.ini 中的 filter.default 指令。
结束支持:
* PHP 7.0: 2018年12月3日
* PHP 7.1: 2019年12月1日
* PHP 7.2: 2020年11月30日
* PHP 7.3: 2021年12月6日
* PHP 7.4: 2022年11月28日 (当前已结束支持)
说明: PHP 7 是性能的里程碑,同时引入了重要的现代语言特性(类型声明、新运算符等),巩固了 PHP 在现代 Web 开发中的地位。7.4 是 7.x 的最后一个重要版本。

6. PHP 8 (2020)
发布时间: 2020年11月 (PHP 8.0)
核心引擎: Zend Engine 持续优化 (JIT 是核心特性)
主要特性 (现代化与性能再进化):
JIT (Just-In-Time) 编译器: 在特定 CPU 密集型工作负载下带来显著性能提升 (如数学计算、游戏)。
联合类型 (Union Types): string|int (表示参数/返回值可以是多种类型之一)。
match 表达式: 更强大、简洁、严格的 switch 替代品 ($result = match($statusCode) { 200 => 'OK', 404 => 'Not Found', default => 'Unknown' })。
命名参数: htmlspecialchars($string, double_encode: false) (提高可读性,允许跳过可选参数)。
构造器属性提升 (Constructor Property Promotion): 简化类构造函数的写法 (class Point { public function __construct(public float $x, public float $y) {} })。
static 返回类型: 允许在继承链中返回 $this 的类型。
mixed 伪类型: 显式表示任意类型。
throw 表达式: $nullableValue ?? throw new InvalidArgumentException(); (可在表达式上下文中抛出异常)。
WeakMap 一种特殊的 Map,其键不会阻止对象被垃圾回收。
Stringable 接口: 自动实现于定义了 __toString() 方法的类。
str_contains()str_starts_with()str_ends_with() 常用字符串操作的专用函数。
get_debug_type() 比 gettype() 返回更详细的类型信息。
Nullsafe 操作符 (?->): $country = $session?->user?->getAddress()?->country; (链式调用中遇到 null 则短路返回 null)。
属性 (Attributes): #[Route("/api/posts")] (结构化元数据的原生语法,替代或补充 Doc Comments)。
一致的类型错误: 类型错误时抛出 TypeError 异常。
移除大量过时功能: 如 create_function()real 类型别名等。
重要子版本更新:
PHP 8.1 (2021):
枚举 (Enums): 第一方支持的枚举类型 (enum Status { case Draft; case Published; })。
readonly 属性: 属性只能在初始化时赋值一次 (public readonly string $id;)。
纤程 (Fibers): 提供轻量级、无堆栈的并发原语,用于实现异步 I/O 和绿色线程/协程库。
never 返回类型: 表示函数永不返回 (总是抛出异常或退出)。
Final 类常量: final public const VERSION = '1.0';
新的 array_is_list($array) 函数。
新的 fsync/fdatasync 函数。
显式八进制数字表示法 (0o16) 。
$_FILES 中的新条目: full_path (保留上传文件时的目录结构)。
PHP 8.2 (2022):
只读类 (readonly class): 所有属性都是 readonly
null 和 false 作为独立类型: return null;return false; (联合类型中更精确)。
析取范式 (DNF) 类型: (A&B)|C (组合联合类型和交集类型)。
mysqli_execute_query() 和 mysqli::execute_query() 简化带参数绑定的查询执行。
#[\SensitiveParameter] 属性: 标记敏感参数 (如密码),在堆栈跟踪中隐藏其值。
curl_upkeep 函数: 维护 Curl 连接活性。
Random 扩展: 新的现代随机数生成器接口。
动态属性弃用: 给未声明的属性赋值会发出弃用警告 (除非类用 #[\AllowDynamicProperties] 标记)。准备在 PHP 9 中移除。
移除 utf8_encode()/utf8_decode() 改用 mb_convert_encoding
PHP 8.3 (2023年11月):
类常量显式类型: public const string VERSION = '8.3';
只读属性深拷贝: __clone 方法中现在可以修改只读属性的值 (用于深拷贝场景)。
json_validate() 快速、低内存消耗地验证 JSON 字符串是否有效。
Randomizer 新增方法: getBytesFromString()getFloat()nextFloat()
mb_str_pad() 多字节安全的字符串填充。
#[\Override] 属性: 显式标记方法意图是覆盖父类方法,编译器会检查。
动态获取类常量/枚举成员: $constantName = 'CONSTANT'; $value = MyClass::{$constantName};
gc_status() 增强: 提供更多垃圾收集器状态信息。
命令行 --ini 选项增强: 显示更多配置信息。
改进 unserialize() 错误处理: E_NOTICE -> E_WARNING
结束支持 (预计):
* PHP 8.0: 2023年11月26日 (已结束)
* PHP 8.1: 2024年11月25日 (即将结束)
* PHP 8.2: 2025年12月8日
* PHP 8.3: 2026年11月23日
说明: PHP 8 是语言现代化进程的重大飞跃,引入了 JIT、联合类型、枚举、match、属性、只读属性/类等革命性特性,同时继续提升性能、类型安全性和开发体验。强烈建议新项目使用 PHP 8.x (至少 8.1+),旧项目积极规划升级。

7. 未来展望 (PHP 8.4+)
PHP 8.4: 预计于 2024年11月 发布。重点可能包括:
* 进一步优化 JIT 性能和应用场景。
* 类型系统持续增强 (如 typed 常量表达式)。
* 清理遗留代码和不一致行为。
* 新的便利特性(如更简洁的对象字面量构造提案)。
PHP 9: 处于早期规划阶段。主要目标可能是:
* 移除 PHP 8.x 中已弃用的遗留功能(最显著的是动态属性)。
* 更彻底的内部清理和现代化。
* 可能引入更大胆的语言特性变更。
* 发布时间尚未确定。


总结与建议:

  1. 历史版本 (PHP 5.6及以下, PHP 7.4及以下): 已结束安全支持! 存在严重安全风险,必须立即升级

  2. PHP 8.0: 已结束支持,不再接收安全更新。

  3. PHP 8.1: 当前活跃支持中,但将于 2024年11月结束。 如果正在使用,应开始规划升级到 8.2 或 8.3。

  4. PHP 8.2: 当前活跃支持中 (安全支持至 2025年12月)。 稳定且特性丰富,是当前推荐的稳定版本之一。

  5. PHP 8.3: 最新稳定版本 (安全支持至 2026年11月)。 包含最新特性和改进,是新项目和积极维护项目的最推荐起点

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚空_2025

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值