ThinkPHP 6入门到精通全教程,从环境搭建到项目实战

ThinkPHP(简称TP)是国内最流行的PHP开源框架之一,凭借简洁的语法、完善的中文文档和丰富的生态,成为中小企业Web开发、后台管理系统、API接口服务的首选框架,很多PHP新手都会选择TP作为...

作为国内占有率最高的PHP开发框架之一,ThinkPHP(开发者常简称tps://www.bnqdsrmyy.com/tags-277.html" class="superseo">TP)凭借轻量化的设计、保姆级的中文文档、活跃的社区生态,成为中小企业Web建站、后台管理系统、跨端API接口开发的首选框架,也是绝大多数PHP新手的入门第一框架,它完美适配国内开发者的编码习惯,社区沉淀了海量的教程、插件和问题解决方案,遇到开发难题时很容易找到参考思路,本教程将从零基础出发,带你系统掌握ThinkPHP 6的核心开发技能,从环境搭建到完整的实战项目落地,帮你快速从TP小白成长为能独立开发项目的开发者。


前期准备:环境搭建与项目初始化

必备工具安装

首先需要准备三个基础开发工具:PHP运行环境、Composer依赖管理工具、MySQL数据库。

  1. PHP环境:推荐使用PHP7.4及以上版本(TP6最低支持PHP7.2),新手建议直接使用集成包简化配置:
    • Windows/Mac用户可以下载XAMPP或WAMP,一键安装即可自带Apache、MySQL和PHP,下载地址可从官方开源站点获取;
    • Linux用户可以手动编译安装,或使用宝塔面板快速搭建环境。 安装完成后可以通过php -v命令验证PHP版本是否符合要求。
  2. Composer安装:Composer是PHP的包管理工具,TP6的安装、依赖更新都需要用到它,且强烈建议配置国内镜像加速下载:
    • Windows用户直接下载Composer-Setup.exe,按照向导选择本地PHP安装路径完成安装,安装后执行composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/切换阿里云镜像;
    • Linux用户执行以下命令快速安装:
      curl -sS https://getcomposer.org/installer | php
      mv composer.phar /usr/local/bin/composer
      composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

      安装完成后执行composer -V,如果能看到Composer版本号,说明安装成功。

  3. MySQL数据库:确保MySQL服务正常启动,默认端口为3306,后续需要创建专属的TP项目数据库。

初始化TP6项目

打开命令行终端,进入你的网站根目录,执行Composer创建项目的命令:

composer create-project topthink/think tp6demo

小提示:如果Composer下载速度过慢,可以临时使用阿里云镜像加速:composer create-project topthink/think tp6demo --repo=https://mirrors.aliyun.com/composer/

等待依赖安装完成后,进入项目目录并启动TP内置的开发服务器:

cd tp6demo
php think run

默认启动端口为8000,如果端口被占用,可以指定自定义端口:php think run -p 8080,在浏览器访问http://localhost:8000,如果看到TP6的欢迎页面,说明项目初始化成功。

基础目录结构解析

TP6的项目目录设计简洁清晰,新手需要先了解核心目录的作用: | 目录/文件 | 说明 | | ---- | ---- | | public/ | 项目唯一入口目录,所有请求都通过这里的index.php进入,静态资源(CSS、JS、图片)建议放在该目录下的static文件夹中,生产环境部署时需要将根目录指向该文件夹 | | app/ | 应用业务核心目录,控制器、模型、视图、中间件等业务代码都放在这里 | | config/ | 全局配置目录,包含数据库、路由、缓存、应用基础配置等文件 | | runtime/ | 缓存、日志、会话等临时文件目录,开发阶段可以随时清空该目录重置缓存,生产环境需要赋予读写权限 | | extend/ | 第三方扩展类库目录,用于存放自定义的公共工具类、未通过Composer安装的第三方包 | | vendor/ | Composer安装的依赖包目录,请勿手动修改该目录下的文件 | | route/ | 配置文件路由的专属目录,TP6支持注解路由和配置路由两种模式 |


核心开发基础:路由、控制器与模型

路由配置:定义访问规则

TP6支持两种主流路由模式:注解路由和配置文件路由,新手可以先从简单的注解路由入手。

注意:TP6默认关闭注解路由,需要先开启配置:在config/route.php中设置'annotation' => true,同时需要安装注解路由扩展:composer require topthink/think-annotation

  1. 在app/controller/目录下新建User.php控制器文件,写入基础代码:

    <?php
    namespace app\controller;
    use think\Controller;
    use think\annotation\route\Get;
    use think\annotation\route\Post;
    class User extends Controller
    {
        // 基础GET路由
        #[Get('/user/index')]
        public function index()
        {
            return "用户列表页面";
        }
        // 动态路由,接收id参数
        #[Get('/user/detail/:id')]
        public function detail($id)
        {
            return "用户ID:" . $id;
        }
    }
  2. 重启开发服务器后,访问http://localhost:8000/user/index就能看到返回的文本内容,如果需要配置POST路由,可以替换为#[Post('/user/add')],支持多种HTTP请求方式和复杂路由规则。

控制器:处理业务逻辑

控制器是接收用户请求、处理业务逻辑并返回结果的核心层,除了简单的文本返回,我们还可以渲染视图页面或者返回JSON数据。 修改User.php控制器,增加视图渲染和JSON返回的示例:

use think\facade\View;
// 渲染用户列表视图
#[Get('/user/list')]
public function list()
{
    // 模拟从数据库查询用户数据
    $userList = [
        ['id' => 1, 'name' => '张三', 'age' => 25],
        ['id' => 2, 'name' => '李四', 'age' => 30]
    ];
    // 向视图传递数据
    $this->assign('userList', $userList);
    // 渲染app/view/user/list.html视图文件
    return $this->fetch();
}
// 返回JSON格式接口数据
#[Get('/user/info/:id')