文章目录
- 前言
-
- [🎯 ThinkPHP 是什么?](#🎯 ThinkPHP 是什么?)
- [🔧 ThinkPHP 解决了什么问题?](#🔧 ThinkPHP 解决了什么问题?)
-
- [1. 不用重复造轮子](#1. 不用重复造轮子)
- [2. 代码更有序](#2. 代码更有序)
- [3. 安全性](#3. 安全性)
- [📚 ThinkPHP 核心概念](#📚 ThinkPHP 核心概念)
-
- [1. MVC 架构(最重要的概念)](#1. MVC 架构(最重要的概念))
- [2. 模块化](#2. 模块化)
- [3. 路由](#3. 路由)
- [4. 配置](#4. 配置)
- [🏗️ ThinkPHP 目录结构](#🏗️ ThinkPHP 目录结构)
- [🔑 ThinkPHP 常用功能](#🔑 ThinkPHP 常用功能)
-
- [1. 数据库操作(Db类)](#1. 数据库操作(Db类))
- [2. 请求与响应](#2. 请求与响应)
- [3. 缓存](#3. 缓存)
- [4. Session 和 Cookie](#4. Session 和 Cookie)
- [5. 验证器](#5. 验证器)
- [📊 ThinkPHP 请求生命周期](#📊 ThinkPHP 请求生命周期)
- [🎓 学习建议](#🎓 学习建议)
-
- [1. 先掌握基础](#1. 先掌握基础)
前言
🎯 ThinkPHP 是什么?
ThinkPHP 是一个国产的 PHP Web 开发框架,就像一个"半成品房子",帮你快速搭建 Web 应用。
简单理解:
- 不用框架:像手工搭建一座房子,从零开始砌砖
- 用框架:像搭积木,现成的墙、门、窗组装起来
🔧 ThinkPHP 解决了什么问题?
1. 不用重复造轮子
| 问题 | 不用框架 | 用 ThinkPHP |
|---|---|---|
| 数据库操作 | 写原生 SQL $mysqli->query() |
$this->db->table('user')->select() |
| 接收表单数据 | $_POST['username'] |
input('post.username') |
| 页面渲染 | echo "<html>..." |
return $this->fetch() |
| URL 处理 | 自己解析 URL | 自动路由 |
| 登录验证 | 每个页面写一遍 | 写一次,全局生效 |
2. 代码更有序
php
不用框架: 用 ThinkPHP:
├── index.php application/
│ ├── 数据库连接 ├── admin/
│ ├── 处理逻辑 │ ├── controller/
│ ├── HTML混在一起 │ ├── model/
│ └── 一大堆函数 │ └── view/
└── login.php └── api/
├── 数据库连接 └── controller/
├── 处理逻辑
└── ... 模块化,职责清晰
3. 安全性
框架内置保护:
- SQL 注入防护
- XSS 攻击防护
- CSRF 令牌
- 自动转义数据
📚 ThinkPHP 核心概念
1. MVC 架构(最重要的概念)
js
MVC = Model(模型) + View(视图) + Controller(控制器)
类比:餐厅
js
点餐(请求) → 服务员(Controller)接收你的要求
↓
厨师(Model)准备食材、烹饪
↓
上菜(View)把美食端到你面前
在你的项目中:
php
用户访问 /admin/user/lists
↓
Controller(控制器)→ 接收请求,调用模型
↓
Model(模型) → 查询数据库,返回用户数据
↓
View(视图) → 把数据渲染成 HTML 页面
↓
浏览器显示页面
2. 模块化
php
application/
├── admin/ → 后台管理模块(管理员用)
├── agent/ → 代理商模块(代理商用)
├── api/ → API模块(给App、小程序提供数据)
├── chat/ → 客服模块
└── index/ → 前台模块(网站首页)
每个模块都是独立的,互不干扰。
3. 路由
路由 = URL 和 控制器方法的映射
php
用户访问 URL → ThinkPHP 解析 → 执行对应方法
─────────────────────────────────────────────────────────────
/admin/user/lists → admin模块/user控制器/lists方法
/admin/login/doLogin → admin模块/login控制器/doLogin方法
/api/game/weixinLogin → api模块/game控制器/weixinLogin方法
4. 配置
ThinkPHP 有多层配置:
php
config/
├── database.php → 数据库配置(地址、用户名、密码)
├── app.php → 应用配置(调试模式、时区)
├── cache.php → 缓存配置(Redis、文件缓存)
├── session.php → Session配置
├── cookie.php → Cookie配置
└── template.php → 模板引擎配置
application/admin/config/
├── database.php → admin模块的数据库配置
├── cache.php → admin模块的缓存配置
└── app.php → admin模块的应用配置
优先级:模块配置 > 应用配置
🏗️ ThinkPHP 目录结构
php
d:\php\xxx\
├── application/ ← 你的应用代码
│ ├── admin/ ← 后台模块
│ │ ├── controller/ ← 控制器(处理请求)
│ │ ├── model/ ← 模型(操作数据库)
│ │ ├── view/ ← 视图(显示页面)
│ │ └── config.php ← 模块配置
│ ├── index/ ← 前台模块
│ ├── api/ ← API模块
│ └── common.php ← 公共函数
│
├── public/ ← Web根目录(对外访问)
│ ├── index.php ← 入口文件
│ └── static/ ← 静态资源(CSS、JS、图片)
│
├── thinkphp/ ← 框架核心(别动它)
│ ├── library/ ← 框架类库
│ │ └── think/ ← 核心类
│ └── tpl/ ← 模板文件
│
├── vendor/ ← Composer依赖(第三方库)
├── runtime/ ← 运行时(日志、缓存)
├── config/ ← 应用配置
└── route/ ← 路由配置
🔑 ThinkPHP 常用功能
1. 数据库操作(Db类)
php
// 查询所有
$this->db->table('user')->select();
// 查询一条
$this->db->table('user')->find();
// 条件查询
$this->db->table('user')->where('id', '>', 10)->select();
// 添加
$this->db->table('user')->insert($data);
// 更新
$this->db->table('user')->where('id', 1)->update($data);
// 删除
$this->db->table('user')->where('id', 1)->delete();
2. 请求与响应
php
// 获取GET参数
input('get.id')
input('id') // 简写
// 获取POST参数
input('post.username')
// 获取所有POST数据
Request::post()
// JSON返回
return json(['code' => 0, 'msg' => '成功']);
3. 缓存
php
// 使用Redis缓存
Cache::store('redis')->set('key', 'value', 3600);
Cache::store('redis')->get('key');
// 使用文件缓存
Cache::set('key', 'value');
Cache::get('key');
4. Session 和 Cookie
php
// Session
Session::get('user_id');
Session::set('user_id', 123);
// Cookie
Cookie::get('remember_token');
Cookie::set('remember_token', 'abc', 3600*24);
5. 验证器
php
// 定义验证规则
$rule = [
'username' => 'require|max:20',
'password' => 'require|min:6',
];
// 验证
$validate = new Validate($rule);
if (!$validate->check($data)) {
return $validate->getError();
}
📊 ThinkPHP 请求生命周期
php
用户请求 http://xxx.com/admin/user/lists
↓
┌─────────────────────────────────────────────────────────┐
│ 1. 入口文件 public/index.php │
│ 加载框架基础文件 base.php │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 2. 应用启动 App::run() │
│ 加载应用配置、启动路由 │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 3. URL 路由解析 │
│ /admin/user/lists │
│ → 模块:admin | 控制器:user | 方法:lists │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 4. 调度控制器 ← 你写代码的地方 │
│ 实例化 Controller → 调用方法 │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 5. 业务逻辑处理 ← 你写代码的地方 │
│ Model 操作数据库 │
│ 返回数据给 Controller │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 6. 视图渲染 │
│ View + 数据 → HTML │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 7. 响应输出 │
│ 发送 HTML 给浏览器 │
└─────────────────────────────────────────────────────────┘
↓
浏览器显示页面
🎓 学习建议
1. 先掌握基础
| 顺序 | 内容 | 重要性 |
|---|---|---|
| 1 | PHP 基础语法(变量、数组、函数、类) | ⭐⭐⭐⭐⭐ |
| 2 | MVC 架构概念 | ⭐⭐⭐⭐⭐ |
| 3 | 控制器编写 | ⭐⭐⭐⭐⭐ |
| 4 | 模型和数据库操作 | ⭐⭐⭐⭐ |
| 5 | 视图模板 | ⭐⭐⭐⭐ |
| 6 | 路由 | ⭐⭐⭐ |
| 7 | 中间件 | ⭐⭐⭐ |