PHP 全面学习指南(基础 → 高级 → 项目实战 → 面试题)
目录
- PHP 简介与环境搭建
- PHP 基础语法
- 变量与数据类型
- 运算符与流程控制
- 函数详解
- 数组详解
- 字符串处理
- 表单与请求处理
- 文件操作
- Cookie 与 Session
- 面向对象编程(OOP)
- 命名空间与自动加载
- 错误处理与异常机制
- 数据库 MySQL 操作
- PDO 与 MySQLi
- MVC 架构思想
- Composer 与依赖管理
- Laravel 入门与核心思想
- PHP 安全开发
- Redis 与缓存
- API 开发
- JWT 登录认证
- 高并发与性能优化
- Swoole 与协程
- Docker 部署 PHP 项目
- PHP 项目实战
- PHP 常见面试题(基础)
- PHP 常见面试题(高级)
- Laravel 面试题
- Redis 面试题
- MySQL 面试题
- 项目经验回答模板
- PHP 学习路线建议
1. PHP 简介与环境搭建
什么是 PHP
PHP(Hypertext Preprocessor)是一种运行在服务端的脚本语言,特别适合 Web 开发。
特点:
- 开源免费
- 学习成本低
- 适合 Web 开发
- 与 MySQL 配合非常强
- Laravel、ThinkPHP 等生态成熟
PHP 执行流程:
浏览器 → Web 服务器(Nginx/Apache) → PHP 解析器 → MySQL → 返回 HTML
安装 PHP
Windows
推荐:
- XAMPP
- WampServer
- PHPStudy
Mac
bash
brew install php
Linux
bash
sudo apt install php
查看版本:
bash
php -v
运行 PHP 文件:
bash
php index.php
启动内置服务器:
bash
php -S localhost:8000
2. PHP 基础语法
PHP 标签
php
<?php
echo "Hello PHP";
?>
输出语句
php
<?php
echo "hello";
print "world";
?>
区别:
- echo 可输出多个值
- print 只能输出一个值
注释
php
// 单行注释
# 单行注释
/*
多行注释
*/
3. 变量与数据类型
变量
php
$name = "Tom";
$age = 20;
规则:
- 必须以 $ 开头
- 区分大小写
数据类型
字符串
php
$str = "hello";
整型
php
$num = 100;
浮点型
php
$price = 99.9;
布尔型
php
$isLogin = true;
数组
php
$arr = [1,2,3];
NULL
php
$a = null;
数据类型检测
php
var_dump($a);
4. 运算符与流程控制
算术运算符
php
$a + $b
$a - $b
$a * $b
$a / $b
$a % $b
比较运算符
php
==
===
!=
!==
>
<
== 与 === 区别
php
1 == "1" // true
1 === "1" // false
=== 会比较类型。
if 判断
php
if($age > 18){
echo "成年人";
}else{
echo "未成年";
}
switch
php
switch($num){
case 1:
echo 1;
break;
}
循环
for
php
for($i=0;$i<5;$i++){
echo $i;
}
while
php
while($i < 5){
$i++;
}
foreach
php
foreach($arr as $v){
echo $v;
}
5. 函数详解
定义函数
php
function sum($a,$b){
return $a + $b;
}
默认参数
php
function test($name="Tom"){
echo $name;
}
引用传参
php
function add(&$num){
$num++;
}
可变参数
php
function total(...$nums){
return array_sum($nums);
}
6. 数组详解
索引数组
php
$arr = [1,2,3];
关联数组
php
$user = [
"name" => "Tom",
"age" => 20
];
常用数组函数
count
php
count($arr);
in_array
php
in_array(1,$arr);
array_merge
php
array_merge($a,$b);
array_push
php
array_push($arr,4);
sort
php
sort($arr);
7. 字符串处理
拼接
php
$str = "hello" . "world";
常用函数
strlen
php
strlen($str);
substr
php
substr($str,0,3);
explode
php
explode(",",$str);
implode
php
implode(",",$arr);
trim
php
trim($str);
8. 表单与请求处理
GET 请求
php
$name = $_GET['name'];
POST 请求
php
$name = $_POST['name'];
文件上传
php
move_uploaded_file($_FILES['file']['tmp_name'],"uploads/a.png");
9. 文件操作
读取文件
php
$content = file_get_contents("a.txt");
写入文件
php
file_put_contents("a.txt","hello");
10. Cookie 与 Session
Cookie
php
setcookie("username","tom",time()+3600);
获取:
php
$_COOKIE['username'];
Session
php
session_start();
$_SESSION['user'] = 'Tom';
11. 面向对象编程(OOP)
类与对象
php
class User {
public $name;
public function say(){
echo "hello";
}
}
$user = new User();
构造函数
php
public function __construct($name){
$this->name = $name;
}
继承
php
class Admin extends User {
}
封装
php
private $password;
多态
多态核心:
同一个方法不同实现。
抽象类
php
abstract class Animal {
abstract public function run();
}
接口
php
interface Test {
public function demo();
}
Trait
php
trait Log {
public function write(){
}
}
12. 命名空间与自动加载
命名空间
php
namespace App\Controller;
自动加载
Composer 自动加载:
json
{
"autoload": {
"psr-4": {
"App\\": "app/"
}
}
}
执行:
bash
composer dump-autoload
13. 错误处理与异常机制
try catch
php
try {
} catch(Exception $e){
echo $e->getMessage();
}
自定义异常
php
throw new Exception("错误");
14. 数据库 MySQL 操作
连接数据库
php
$conn = mysqli_connect("localhost","root","123456","test");
查询数据
php
$sql = "select * from users";
$result = mysqli_query($conn,$sql);
15. PDO 与 MySQLi
PDO 优势
- 支持多数据库
- 支持预处理
- 更安全
PDO 示例
php
$pdo = new PDO("mysql:host=localhost;dbname=test","root","123456");
预处理
php
$stmt = $pdo->prepare("select * from users where id=?");
$stmt->execute([1]);
作用:
防止 SQL 注入。
16. MVC 架构思想
MVC:
- Model 数据层
- View 视图层
- Controller 控制层
MVC 请求流程
浏览器 → 路由 → 控制器 → 模型 → 数据库 → 返回视图
17. Composer 与依赖管理
安装 Composer
bash
composer -V
安装依赖
bash
composer require monolog/monolog
18. Laravel 入门与核心思想
Laravel 特点
- MVC 架构
- ORM(Eloquent)
- Artisan 命令
- 中间件
- 队列
- 事件
创建项目
bash
composer create-project laravel/laravel blog
路由
php
Route::get('/user',function(){
return 'hello';
});
控制器
bash
php artisan make:controller UserController
19. PHP 安全开发
SQL 注入
错误:
php
$sql = "select * from users where id=$id";
正确:
php
$stmt = $pdo->prepare("select * from users where id=?");
XSS 攻击
解决:
php
htmlspecialchars($str);
CSRF
解决:
Token 验证。
20. Redis 与缓存
Redis 作用
- 缓存
- 分布式锁
- 队列
- Session 存储
PHP 操作 Redis
php
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
21. API 开发
返回 JSON
php
header('Content-Type:application/json');
echo json_encode([
'code'=>200,
'msg'=>'success'
]);
22. JWT 登录认证
JWT 组成
- Header
- Payload
- Signature
JWT 优点
- 无状态
- 适合前后端分离
23. 高并发与性能优化
OPcache
PHP 字节码缓存。
Redis 缓存
减少数据库压力。
数据库优化
- 索引
- 分页
- SQL 优化
- 读写分离
Nginx 优化
- gzip
- 静态资源缓存
- 负载均衡
24. Swoole 与协程
Swoole 特点
- 常驻内存
- 高性能
- 协程
- WebSocket
协程优势
提升 IO 性能。
25. Docker 部署 PHP 项目
Dockerfile
dockerfile
FROM php:8.2-fpm
RUN docker-php-ext-install pdo pdo_mysql
docker-compose
yaml
version: '3'
services:
php:
build: .
26. PHP 项目实战
博客系统项目
技术栈
- PHP
- MySQL
- Redis
- Laravel
- Nginx
功能模块
用户模块
- 注册
- 登录
- JWT
- 权限
文章模块
- 发布文章
- 编辑文章
- 删除文章
评论模块
- 评论
- 回复
项目亮点
Redis 缓存热点文章
JWT 登录认证
OSS 文件上传
队列异步发送邮件
Nginx + Redis 优化性能
电商项目实战
核心模块
- 商品
- 购物车
- 订单
- 支付
- 秒杀
秒杀优化
Redis 预减库存
RabbitMQ 异步下单
防重复提交
限流
27. PHP 常见面试题(基础)
1. GET 和 POST 区别
答案:
- GET 参数在 URL
- POST 在请求体
- GET 不安全
- POST 更适合提交数据
- GET 长度有限制
2. include 和 require 区别
答案:
- include 错误继续执行
- require 错误直接终止
3. session 和 cookie 区别
答案:
Cookie 存客户端。
Session 存服务端。
4. == 和 === 区别
答案:
== 不比较类型。
=== 比较类型。
5. 什么是面向对象
答案:
面向对象核心:
- 封装
- 继承
- 多态
28. PHP 常见面试题(高级)
1. 什么是 PHP-FPM
答案:
PHP FastCGI Process Manager。
用于管理 PHP 进程池。
2. 什么是 FastCGI
答案:
Web 服务器与 PHP 通信协议。
3. 什么是 OPCache
答案:
PHP 字节码缓存。
提升性能。
4. 如何防止 SQL 注入
答案:
- PDO 预处理
- 参数绑定
- 不拼接 SQL
5. 什么是依赖注入
答案:
对象依赖通过外部传入。
降低耦合。
6. 什么是设计模式
常见:
- 单例模式
- 工厂模式
- 观察者模式
- 策略模式
7. 什么是单例模式
php
class Singleton {
private static $instance;
private function __construct(){}
public static function getInstance(){
if(!self::$instance){
self::$instance = new self();
}
return self::$instance;
}
}
作用:
全局唯一实例。
29. Laravel 面试题
1. Laravel 生命周期
请求 → 路由 → 中间件 → 控制器 → 响应
2. 中间件作用
请求过滤。
例如:
- 登录验证
- 权限验证
3. Eloquent ORM 优点
- 链式调用
- 易维护
- 开发效率高
4. 什么是服务容器
Laravel IOC 容器。
用于依赖注入。
30. Redis 面试题
1. Redis 为什么快
答案:
- 内存存储
- 单线程
- IO 多路复用
2. Redis 持久化
- RDB
- AOF
3. 缓存穿透
解决:
- 布隆过滤器
- 缓存空值
4. 缓存击穿
解决:
热点 Key 加锁。
5. 缓存雪崩
解决:
- 过期时间随机
- Redis 集群
31. MySQL 面试题
1. 索引是什么
答案:
提升查询速度的数据结构。
2. B+Tree 为什么适合索引
答案:
- 查询效率稳定
- 范围查询强
- 磁盘 IO 少
3. 什么是事务
事务四大特性:
- ACID
4. 什么是死锁
多个事务互相等待。
5. 如何优化 SQL
答案:
- 加索引
- 避免 select *
- 分页优化
- explain 分析
32. 项目经验回答模板
面试项目介绍模板
"我负责后端开发,主要使用 Laravel + MySQL + Redis。
项目中实现了 JWT 登录认证、Redis 缓存、消息队列、OSS 上传等功能。
在性能优化方面,通过 Redis 缓存热点数据、数据库索引优化、Nginx gzip 压缩,将接口响应时间降低了约 40%。"
面试性能优化回答
"主要从以下几个方向优化:
- Redis 缓存
- 数据库索引优化
- SQL 优化
- 队列异步处理
- Nginx 静态缓存
- OPcache 字节码缓存"
33. PHP 学习路线建议
第一阶段(基础)
学习内容:
- PHP 语法
- 数组
- 函数
- 表单
- MySQL
周期:
1~2 个月。
第二阶段(进阶)
学习内容:
- OOP
- MVC
- Composer
- Laravel
- Redis
周期:
2~3 个月。
第三阶段(高级)
学习内容:
- 高并发
- Swoole
- 微服务
- Docker
- Kubernetes
周期:
长期。
34. PHP 相关学习资源与文档
官方文档
PHP 官方文档
- PHP 官方文档内容最权威
- 包含函数手册
- 面向对象
- 扩展
- 安全
- 配置
推荐:
- 先学基础语法
- 再看函数手册
- 遇到不会的函数直接查官方文档
Composer 官方文档
学习内容:
- 包管理
- 自动加载
- 依赖管理
- PSR 规范
适合学习:
- 现代 PHP 开发
- Laravel
- 框架开发
Laravel 官方文档
Laravel 是 PHP 最流行框架之一。
官方文档非常完整:
- 路由
- 控制器
- ORM
- 队列
- 事件
- 中间件
- 缓存
- 权限
学习建议:
边做项目边看文档。
Redis 官方文档
重点学习:
- String
- Hash
- List
- Set
- ZSet
- 持久化
- 集群
- 缓存优化
MySQL 官方文档
重点:
- 索引
- SQL 优化
- explain
- 事务
- 锁
- 主从复制
35. PHP 常用开发工具
VSCode
推荐插件:
- PHP Intelephense
- PHP Namespace Resolver
- DotENV
- Laravel Blade Snippets
PhpStorm
PHP 专业 IDE。
优点:
- 智能提示强
- Laravel 支持优秀
- 调试方便
- Git 集成
缺点:
- 占内存
- 收费
Postman
用于测试 API。
适合:
- 接口调试
- Token 测试
- 文件上传
Navicat
MySQL 数据库管理工具。
Redis Desktop Manager
Redis 可视化工具。
36. PHP 常见框架介绍
Laravel
Laravel 特点
- 当前最流行 PHP 框架
- 生态完整
- 开发效率高
- 适合中大型项目
核心功能
- 路由
- 中间件
- ORM
- 队列
- 事件
- 缓存
- 服务容器
- 依赖注入
适合项目
- 后台管理系统
- 电商系统
- API 项目
- SaaS 系统
ThinkPHP
ThinkPHP 特点
- 国产框架
- 学习成本低
- 上手快
- 文档中文友好
优点
- 适合新手
- CURD 开发效率高
- 国内使用广泛
缺点
- 大型项目扩展性一般
Symfony
Symfony 特点
- 企业级框架
- 非常规范
- 组件化强
优点
- 架构优秀
- 可维护性强
- 大型项目适合
缺点
- 学习难度较高
Yii2
Yii2 特点
- 高性能
- 开发效率高
- Gii 代码生成器优秀
适合
- CMS
- 后台系统
- 企业项目
Hyperf
Hyperf 特点
- 基于 Swoole
- 协程框架
- 高并发
适合
- 微服务
- IM
- 高并发 API
- 实时系统
Workerman
Workerman 特点
- 常驻内存
- 支持 WebSocket
- 高性能
适合
- 聊天系统
- 推送系统
- 长连接项目
37. PHP 推荐学习资源
官方文档与资源链接
PHP 官方文档
Composer 官方文档
Laravel 官方文档
ThinkPHP 官方文档
Symfony 官方文档
Yii2 官方文档
Hyperf 官方文档
Workerman 官方文档
Redis 官方文档
MySQL 官方文档
PHP 常用资源网站
Packagist
PHP 最大 Composer 包平台:
PHP The Right Way
PHP 最佳实践:
Laracasts
Laravel 视频学习平台:
PHP-FIG
PSR 规范:
GitHub
开源项目:
推荐搜索:
- Laravel Admin
- PHP Blog
- PHP Mall
- PHP CMS
Docker 官方文档
Nginx 官方文档
RabbitMQ 官方文档
Elasticsearch 官方文档
视频学习平台
视频学习平台
Bilibili
推荐搜索:
- PHP 全栈开发
- Laravel 实战
- Redis 教程
- MySQL 优化
慕课网
适合:
- Laravel
- Docker
- Redis
- MySQL
极客时间
推荐专栏:
- PHP 进阶
- MySQL 实战
- Redis 核心技术
38. PHP 学习建议
新手阶段
重点:
- PHP 基础
- MySQL
- HTML/CSS/JS
- 表单
- API
不要一开始就学框架。
进阶阶段
重点:
- Laravel
- Redis
- Linux
- Docker
- Git
- API 开发
高级阶段
重点:
- 高并发
- Swoole
- 微服务
- Kubernetes
- 消息队列
- 性能优化
总结
PHP 依然是 Web 后端的重要技术栈。
学习重点建议:
- 扎实基础
- 熟悉 Laravel
- 掌握 MySQL 优化
- 熟悉 Redis
- 掌握项目实战
- 重视性能优化
- 熟悉面试题
如果目标是就业:
建议重点掌握:
- Laravel
- Redis
- MySQL
- Linux
- Docker
- API 开发
- JWT
- 队列
- 高并发优化