PHP
概述
PHP(Hypertext Preprocessor)是一种服务器端脚本语言,起源于1995年丹麦籍开发者拉斯穆斯·勒多夫(Rasmus Lerdorf)为管理个人主页而编写的CGI脚本。得益于可直接嵌入HTML的语法结构,它专门用于动态生成网页,至今仍是全球相当一部分Web服务器所使用的主流开源语言。作为WordPress、Laravel、MediaWiki等庞大生态系统的底层技术,它的意义已不止于一门语言。
主要内容
诞生与发展
- PHP/FI(1994~1997):以勒多夫编写的“Personal Home Page Tools”为原型,提供访客计数器和表单处理等简单功能。
- PHP 3(1998):由安迪·古特曼斯(Andy Gutmans)和齐夫·苏拉斯基(Zeev Suraski)重写,并扩展为如今的名称“PHP: Hypertext Preprocessor”;此时它转变为开源项目,从而实现了爆发式增长。
- PHP 4(2000):引入Zend引擎,性能大幅提升,并部分增加了对面向对象编程的支持。
- PHP 5(2004):基于Zend Engine 2,正式引入了面向对象模型、异常处理、PDO(PHP Data Objects)等。
- PHP 6:以支持Unicode为目标,但最终失败,于2010年中止开发。
- PHP 7(2015):以Zend Engine 3重新设计,相较此前版本实现了约2倍的性能提升,并大量加入标量类型提示、空合并运算符等现代语法。
- PHP 8(2020):引入JIT(Just-In-Time)编译器、属性(Attributes)、联合类型、match表达式等,性能与表达力均得到增强。
语言特性
PHP在<?php ... ?>标签内编写代码,可与HTML自由混用。变量以$符号开头,类型声明是可选的,但随着版本升级,类型系统逐步得到强化。源于弱类型(loose typing)的类型转换规则对初学者较为友好,但有时也会成为意外Bug的成因。
主要特性如下。
1. 服务器端执行:代码在服务器上执行,仅将结果HTML发送至客户端。
2. 丰富的内置函数:默认提供字符串、数组、日期、文件系统、正则表达式等庞大的标准库。
3. 广泛的数据库支持:几乎对所有数据库(MySQL、PostgreSQL、SQLite、Oracle等)都存在相应扩展。
4. 多范式:同时支持过程式编码与面向对象编码,也可进行函数式风格的数组处理。
5. 包生态系统:通过依赖管理工具Composer,可使用注册于Packagist的数十万个库。
主要框架与CMS
- Laravel:最受欢迎的全栈框架,提供Eloquent ORM、Blade模板、Artisan CLI等强大工具。
- Symfony:基于组件的企业级框架,众多大型项目基于其构建。
- CodeIgniter、CakePHP、Yii:轻量级或传统MVC框架系列。
- WordPress:占据全球CMS市场约40%以上,是展现PHP至今仍是Web中坚力量的代表性案例。
- MediaWiki:驱动维基百科的软件,以PHP编写。
批评与局限
PHP在历史上因函数命名不一致(str_replace与strtolower)、弱类型导致的安全漏洞、老旧代码库的维护问题等而受到批评。尤其是早期语言设计中仓促拼凑的一面留存至今,“缺乏一致性”的指责颇多。不过,随着PHP 7之后的性能改进、PHP 8现代特性的引入以及静态分析工具(PHPStan、Psalm)的发展,这些弱点已在相当程度上得到弥补。
最新动向
截至2024~2025年,PHP生态系统的主要趋势如下。
- PHP 8.3/8.4:PHP 8.3于2023年底、PHP 8.4于2024年11月正式发布。8.4新增了属性钩子(Property Hooks)、非对称可见性、无需括号即可链式调用
new的语法、#[\Deprecated]属性等,进一步强化了面向对象的表达力。 - PHP 7停止支持:随着PHP 7.4的安全支持于2022年底结束,仍在运营旧有代码的企业向8.x迁移,成为2024年之后的主要课题。
- 性能与JIT的成熟:JIT编译器在实际工作中逐渐得到应用,在CPU密集型任务中的性能优势正得到验证。
- 框架现代化:Laravel 11(2024)展示了简洁的应用结构与改进的队列·调度功能,Symfony 7也被积极使用。Laravel与基于React/Vue的Inertia.js、Livewire等结合,正演进为全栈开发技术栈。
- AI·云集成:在PHP中调用OpenAI、Anthropic等API的SDK不断增多,在无服务器环境(AWS Lambda、Bref)中运行PHP的案例也在扩大。
- 静态分析与类型安全:随着PHPStan、Psalm、Rector等工具在标准开发工作流中站稳脚跟,正朝着结合动态语言灵活性与静态检查稳定性的方向发展。
- Web生态占有率:据W3Techs统计,PHP在服务器端语言中仍以压倒性优势位居第一(70%区间),并在新项目中与Node.js、Python、Go等展开竞争。
相关主题
- [[Laravel]]
- [[WordPress]]
- [[Composer]]
- [[MySQL]]
- [[Web开发]]
- [[服务器端脚本]]