PHP 零基础教程

PHP 简介

PHP(Hypertext Preprocessor,超文本预处理器)是一种广泛使用的开源通用脚本语言。它尤其适用于 Web 开发,并且可以嵌入到 HTML 中。

本章将向你介绍 PHP 作为服务器端(Server-side)脚本语言的身份,对比它与客户端脚本的区别,并解释它在动态网页生成中扮演的角色。

1. 理解服务器端脚本

服务器端脚本是指在 Web 服务器上运行的程序,而不是在用户的浏览器(客户端)中运行。

当用户请求一个网页时,服务器会处理脚本,生成 HTML 响应,然后将该 HTML 发送给浏览器。浏览器接收到的只是静态的 HTML、CSS 和 JavaScript,而永远看不到服务器端脚本本身。这种架构实现了动态内容、数据库交互以及对客户端不可见的安全性操作。

1.1 现实世界中的例子:个性化体验

想象一下一个显示个性化内容的网站,比如在欢迎词中显示你的名字,或者显示你的近期订单列表。这种个性化就是由服务器端脚本处理的。

  • 亚马逊 (Amazon) 的例子:当你访问 Amazon 时,服务器会处理你的登录状态,从数据库中提取你的历史购买记录,并在发送到你浏览器之前,为你量身定制一个唯一的页面。你永远看不到抓取订单记录的底层逻辑代码,你看到的只是最终渲染好的 HTML。
  • 在线银行门户:当你登录时,服务器端脚本会根据数据库验证你的凭据,获取账户余额,并动态生成一个显示你财务信息的安全页面。这个过程的安全性在于敏感逻辑和数据库密码始终保留在服务器上,防止客户端窥探。

1.2 假设场景:公司内部员工门户

假设有一个内部门户,员工可以查看剩余假期。

  1. 员工登录。
  2. 服务器上的 PHP 脚本查询人力资源(HR)数据库。
  3. 获取该员工剩余的假期天数。
  4. 生成一个以友好格式显示这些信息的 HTML 页面。
  5. 在页面发送给员工浏览器之前,脚本甚至可以检查公司政策以判断员工是否有资格申请更多假期。

2. PHP 作为服务器端语言的角色

PHP 之所以能成为优秀的服务器端脚本语言,是因为它与 Web 服务器和数据库有着天然的集成能力。它的工作方式是解释嵌入在 HTML 文件或专用 PHP 文件中的代码。

2.1 PHP 的工作流程

当浏览器请求一个以 .php 结尾的文件时:

  1. Web 服务器(如 Apache 或 Nginx)将请求传递给 PHP 解释器。
  2. 解释器扫描文件,执行它找到的所有 PHP 代码。
  3. 解释器将代码的输出结果与静态 HTML 结合。
  4. 这个结合后的产物(现在是一个纯 HTML 文档)被服务器发回给浏览器的客户端。

2.2 动态内容的生成

  • 博客文章:文章的标题、内容、作者和发布日期通常存储在数据库中。PHP 脚本会查询数据库,提取相关信息,然后将其动态插入到 HTML 模板中。这样你就不需要为每一篇新文章手动编写 HTML 文件。
  • 动态图片库:与其在 HTML 中硬编码每一个 <img> 标签,PHP 脚本可以读取文件夹或数据库中的图片文件名,自动循环生成必要的标签。

3. PHP 在现代 Web 开发中的地位

在当今的开发环境中,PHP 依然是一门强大且应用广泛的语言,支撑着互联网的很大一部分。

  • 内容管理系统 (CMS):它是 WordPress、Drupal 和 Joomla 等流行系统的基石,这些系统驱动着全球数百万计的网站。
  • Web 应用与电商:PHP 被用于各种 Web 应用和电商平台(如 Magento,以及 Laravel 与支付网关的集成)。
  • 现代框架:PHP 持续演进,引入了支持面向对象编程(OOP)的特性,并孕育了 Laravel、Symfony 和 CodeIgniter 等现代框架,使其在当前的大型开发项目中极具竞争力。

4. PHP 发展史

年份版本核心里程碑与特性
1994PHP Tools (起源)Rasmus Lerdorf 编写的 CGI 工具,最初仅用于追踪他个人简历的访问者。
1995PHP/FI 2.0结合了 Form Interpreter,开始具备类似 Perl 的变量、表单处理及嵌入 HTML 的能力。
1998PHP 3.0现代 PHP 的雏形。底层解析器被重写,正式确立递归缩写名 PHP: Hypertext Preprocessor。
2000PHP 4.0搭载全新的 Zend Engine 1.0。引入 Session、输出缓冲及初步的面向对象 (OOP) 支持。
2004PHP 5.0搭载 Zend Engine II,向企业级迈进。引入完善的 OOP 模型、异常处理及极其重要的 PDO。
2005 - 2010PHP 6 (未发布)因尝试在底层原生支持 Unicode (UTF-16) 导致性能下降而流产。其优秀特性被合入 PHP 5.x。
2015PHP 7.0搭载 Zend Engine 3.0,性能实现翻倍。引入标量/返回值类型声明、太空船操作符及 Null 合并。
2020PHP 8.0现代化新篇章。引入 JIT 编译器、联合类型、命名参数、Match 表达式、Nullsafe 操作符及注解。
2021 - 2023PHP 8.1 - 8.3持续优化现代开发体验。引入枚举 (Enums)、只读属性/类、交集类型及析取范式类型。
2024PHP 8.4引入属性钩子 (Property Hooks)、不对称可见性以简化样板代码,并内置全新 HTML5 解析器。
2025PHP 8.5引入管道操作符使链式调用更直观,新增 #[NoDiscard] 注解,原生内置数组首尾获取函数。