PHP就是一种专门用来搭建网站的后端编程语言。1994年,Rasmus Lerdorf最开始搞出来的时候,其实就是一套简单的通用接口(Common Gateway Interface,CGI)工具。没想到后来发展成了使用量较大的服务器端语言。
2026年1月,PHP 8.4.3稳定版已经发布了。这个版本修复了不少bug,也优化了性能。如果你还在用PHP 7.x,真心建议看看升级到8.x的收益。
个人经验:我接手过好几个项目,从PHP 5.6直接跳到PHP 8.x,有些老代码里的mysql_*函数得改掉,但性能提升相当明显。一个WordPress站,升级后页面响应时间从300ms降到了120ms左右。
运行环境:PHP能在哪儿跑?
跟Java有点像,PHP也是跨平台的语言。不管是Windows、macOS还是Linux,都能跑。Web服务器这块,Apache、Nginx、IIS、LightTPD基本都支持。
很多时候我们用的一键集成包,比如XAMPP(Apache + MariaDB + PHP + Perl),底层就是把这些东西打包好。
依赖管理:Composer和PEAR
PHP有两个比较主流的东西来管理和复用代码库:
-
PEAR(PHP Extension and Application Repository):比较老牌的扩展开源仓库,提供一些基础类库
-
Composer:现在PHP开发必备的依赖管理工具,类似Node.js的npm或者Python的pip
现在大多数PHP项目都用Composer。比如你想用Monolog做日志记录,在项目根目录创建composer.json:
{
"require": {
"monolog/monolog": "2.9.0"
}
}
然后终端运行:
composer install
Composer会自动下载并把类加载机制搞定。你只需要在代码开头引入vendor/autoload.php就行。
PHP的优势(为什么它火了这么多年?)
跨平台(Cross-Platform)
你在Windows上写的代码,上传到Linux服务器上通常直接能跑。不像有些语言要改路径分隔符、换行符之类的。
学习门槛不高
如果你有基础的C、Java或者JavaScript语法底子,看PHP代码基本能猜个七八成。
个人建议:新手别一上来就学框架。先拿原生PHP写个简单的留言板或者博客,搞清楚$_GET、$_POST、$_SESSION这些超全局变量怎么用,再看框架会顺畅很多。
数据库支持广
PHP通过PDO(PHP Data Objects)扩展可以连接几乎所有主流数据库:
-
关系型:MySQL、PostgreSQL、SQLite、SQL Server
-
非关系型:MongoDB、Redis
示例:用PDO连接MySQL并查询数据
<?php
// PDO连接MySQL的常见写法
$dsn = "mysql:host=localhost;dbname=testdb;charset=utf8mb4";
$pdo = new PDO($dsn, "用户名", "密码");
// 设置错误模式为异常
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->query("SELECT id, username FROM users LIMIT 5");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "用户: " . $row['username'] . PHP_EOL;
}
?>
为什么用PDO而不是老旧的mysqli? PDO支持12种数据库驱动,换数据库时改动很小。mysqli只认MySQL。PDO还能用命名占位符做预处理,SQL注入基本防住了。
开源(Open Source)
PHP的Zend引擎源代码在GitHub上能直接看到。你也可以提交补丁或者报告bug。
社区活跃且友好
PHP官方文档(php.net/manual)的质量在编程语言里算相当好的了。每个函数都有用户贡献的示例和注意事项。
我遇到过一个问题:json_decode()返回null,翻文档看到json_last_error_msg(),一查原来是字符串有BOM头(Byte Order Mark)。社区文档里早就有人提到了。
多范式编程
PHP支持以下几种写法混用:
-
过程式(写小脚本很方便)
-
面向对象(类、继承、接口、trait)
-
函数式(闭包、箭头函数)
-
命令式
代码号示例:用函数式写法处理数组
<?php
$scores = [85, 92, 78, 88, 95];
// 箭头函数过滤出及格的分数
$passed = array_filter($scores, fn($score) => $score >= 60);
// array_map把分数转成等级
$grades = array_map(function($score) {
if ($score >= 90) return 'A';
if ($score >= 80) return 'B';
if ($score >= 70) return 'C';
return 'D';
}, $passed);
print_r($grades);
?>
与HTML结合紧密
PHP代码可以直接嵌在HTML里面,用<?php ... ?>包裹就行。这也是为什么WordPress主题开发者大部分写的是混合文件(.php里混着HTML/CSS/JS)。
简单的动态页面示例:
<!DOCTYPE html>
<html>
<head>
<title>代码号学习平台</title>
</head>
<body>
<h1>用户列表</h1>
<ul>
<?php
$users = ['张三', '李四', '王五'];
foreach ($users as $user) {
echo "<li>" . htmlspecialchars($user) . "</li>";
}
?>
</ul>
</body>
</html>
注意htmlspecialchars()——不转义的话,如果用户名包含<script>标签,XSS攻击就到手了。
性能表现
PHP作为Apache模块(mod_php)运行的时候,在Linux系统上速度不慢。配合OpCache(字节码缓存,Bytecode Cache)加上MySQL索引优化,高并发场景也能撑住。
为什么要学PHP?能做什么?
PHP可以做出这些东西:
-
动态网页(用户登录、搜索、评论功能)
-
内容管理系统(CMS),比如WordPress、Drupal、Joomla
-
电商网站,比如Magento、OpenCart、Shopee的部分业务也用PHP
-
RESTful API后端
如果你用框架开发,效率会更高。主流的PHP框架有:
| 框架名 | 特点 | 适用场景 |
|---|---|---|
| Laravel | 功能,生态丰富,Eloquent ORM好用 | 中大型Web应用 |
| Symfony | 组件化程度高,稳定 | 企业级项目 |
| WordPress | 严格说是CMS,但插件机制强 | 博客、企业站、电商 |
个人经验:小项目或者API服务,Lumen(Laravel的微框架)够用了。别为了用框架而用框架,原生PHP写个简单的图片上传接口也就几十行代码。
哪些大公司在用PHP?
-
Facebook:早期PHP,后来自己做了HipHop Virtual Machine(HHVM)来提升性能。现在部分业务也转Hack语言了,但PHP的基因一直在。
-
Wikipedia:百科网站,MediaWiki引擎就是PHP写的。
-
WordPress:43%左右的网站跑在WordPress上,而WordPress是PHP写的。间接说明PHP的市场占有率还是很高。
-
Shopify:部分业务用PHP,尤其是主题系统和插件生态。
-
Slack、Etsy、Tumblr早期也都是PHP技术栈。
你的第一个PHP程序:Hello World
创建一个文件index.php,写这些内容:
<?php
echo "Hello, World!";
?>
然后把文件放在web服务器的根目录(比如Apache的htdocs,Nginx的html目录),浏览器访问就能看到输出了。
代码号学习提醒:PHP标签<?php ?>之外的任何字符(包括空格、换行)都会直接发送到浏览器。如果你做文件下载或者JSON API输出,标签外不要有空白字符。
环境准备:快速上手
想省事的,直接装XAMPP或者WampServer。想动手配置的,可以分别装:
-
Web服务器(Nginx或Apache)
-
PHP 8.4.3(从php.net下载)
-
数据库(MySQL或MariaDB)
个人建议:初学者用XAMPP就够了。生产环境再单独配置各个组件,了解PHP-FPM(FastCGI Process Manager)和Nginx的配合方式。
学习PHP之前需要知道什么?
如果你学过这些,上手会更快:
-
HTML + CSS:毕竟PHP输出的是HTML
-
基础的JavaScript:跟PHP不直接相关,但前后端交互要懂
-
SQL语法:增删改查是基本中的基本
-
基本的编程逻辑:变量、循环、条件判断、函数
不用全学完再来弄PHP,可以一边写PHP一边补别的。
本节课程知识要点
| 知识点 | 说明 |
|---|---|
| PHP运行机制 | 服务器端脚本语言,执行后返回HTML |
| 常用集成环境 | XAMPP、WampServer、LNMP/LAMP |
| 依赖管理 | Composer是目前主流方案 |
| 数据库操作 | 推荐用PDO,支持预处理和多种数据库 |
| 框架选择 | Laravel适合快速开发,Symfony适合大型项目 |
专业名词速查
-
CGI (Common Gateway Interface):通用接口,Web服务器和外部程序的交互协议
-
PDO (PHP Data Objects):PHP数据库统一访问抽象层
-
OpCache:PHP字节码缓存扩展,能显著提升性能
-
FPM (FastCGI Process Manager):PHP的FastCGI进程管理器,处理高并发请求
-
Composer:PHP的依赖管理工具
-
ORM (Object Relational Mapping):对象关系映射,把数据库表映射成类
-
MVC (Model-View-Controller):模型-视图-控制器,大多数PHP框架都采用的设计模式