ThinkPHP入门

文章目录

  • 前言
    • [🎯 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');
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 中间件 ⭐⭐⭐
相关推荐
两个人的幸福10 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
BingoGo12 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack12 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户30745969820713 天前
PHP 扩展——从入门到理解
php
鹏仔先生14 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
云水一下14 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
xingpanvip14 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
酉鬼女又兒14 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
dog25014 天前
不要再继续优化 TCP
网络协议·tcp/ip·php
Channing Lewis14 天前
PHP 解析 Excel 的那些坑:一次“行号错位”引发的数据丢失
开发语言·php·excel