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 中间件 ⭐⭐⭐
相关推荐
TE-茶叶蛋2 小时前
结合登录页-PHP基础知识点解析
android·开发语言·php
流觞 无依3 小时前
DedeCMS plus/comment.php 评论 XSS/注入(XSS、SQL注入)修复教程
sql·php·xss
cyber_两只龙宝5 小时前
【Nginx】Nginx实现FastCGI详解
linux·运维·nginx·云原生·php·memcached·fastcgi
dog2505 小时前
卡瓦列里积分赏析
开发语言·php
5G丶5 小时前
ThinkPHP 集群部署完整指南
数据库·php
流觞 无依5 小时前
DedeCMS plus/recommend.php SQL注入漏洞修复教程
sql·php
流觞 无依6 小时前
DedeCMS plus/list.php 参数注入(SQL注入)修复教程
sql·安全·php
软件开发技术6 小时前
最新网络游戏账户交易平台系统源码 全开源版本 全新UI 自适应移动端
php
酿情师6 小时前
PHP 反序列化漏洞与 POP 链详解:网络安全小白从零入门
android·web安全·php