ThinkPHP是什么(从能跑到能长期跑)

ThinkPHP 是一个以 MVC + 约定优于配置 为核心的 PHP Web 框架,强调开发效率与清晰结构。

  • 主流版本是 ThinkPHP 5.x / 6.x,6.x 更偏向现代化(PSR 规范、依赖注入、强类型)
  • 它并不追求“全栈宇宙”,而是给你一套可控、透明、可裁剪的工程骨架。

top-think php

核心运行模型

  • HTTP 请求进入入口文件 public/index.php (请求收口)
  • 框架初始化(容器、配置、路由)
  • 路由解析 → 定位 Controller@Action
  • 中间件链路处理
  • Controller 执行业务逻辑
  • 返回 Response(JSON / HTML)
flowchart LR
    A[HTTP Request] --> B[index.php]
    B --> C[框架初始化]
    C --> D[路由解析]
    D --> E[中间件]
    E --> F[Controller Action]
    F --> G[Response]

MVC 结构

1 Model

  • 负责 数据访问 + 领域规则
  • 不推荐堆业务判断(否则会变成“肥模型”)

2 Controller

  • 负责 请求编排
  • 最佳实践:薄 Controller,只做参数校验与调度

3 Service

  • 复杂业务逻辑应沉到 Service
  • Controller → Service → Model,是生产级结构
flowchart TD
    C[Controller] --> S[Service]
    S --> M[Model]
    M --> DB[(Database)]

路由机制

1 支持方式

  • 注解路由
  • 配置路由
  • RESTful 资源路由

2 高并发下的关键点

  • 路由缓存(生产环境必须开)
  • 避免正则型“万能路由”

3 常见坑

  • 404 不是 PHP-FPM 的错,是路由没命中
  • “controller not exists” ≠ 文件不存在,可能是命名空间不对

ThinkPHP的现实定位

1 优势

  • 上手快,代码直观
  • 国内部署经验多,资料密集
  • 对传统 PHP-FPM / Nginx 友好

2 劣势

  • 默认配置偏“开发态”
  • 需要你主动做工程治理(日志、异常、规范)

3 适合场景

  • API 服务
  • 中后台系统
  • 存量系统持续演进