从零基础到实战,TP(ThinkPHP)全流程入门教程

是《从零基础到实战,TP(ThinkPHP)全流程入门教程》的内容提炼,教程面向ThinkPHP零基础开发者,覆盖从入门到实战的全流程学习路径:先讲解TP框架核心概念与本地开发环境搭建,帮助新手快速搭...
是《从零基础到实战,TP(ThinkPHP)全流程入门教程》的内容提炼,教程面向ThinkPHP零基础开发者,覆盖从入门到实战的全流程学习路径:先讲解TP框架核心概念与本地开发环境搭建,帮助新手快速搭好开发基础;随后系统拆解路由配置、控制器逻辑、模型交互、视图渲染等核心开发技能,搭配实操案例加深理解;最后通过简易博客、后台管理系统等实战项目串联所学,让学习者可独立完成完整Web应用开发,快速掌握TP框架实战逻辑,提升PHP后端开发能力。
TP教程是什么意思,从零基础到实战,TP(ThinkPHP)全流程入门教程

作为国内最受欢迎的PHP Web开发框架之一,ThinkPHP(以下简称TP)以其简洁的语法、完善的生态和高效的开发效率,成为了众多PHP开发者入门框架开发的首选,无论是企业级后台管理系统、电商网站还是个人博客,TP都能快速帮你搭建起稳定可靠的应用,本篇教程将从零基础出发,带你一步步掌握TP框架的核心知识点,最终完成一个完整的实战项目。

TP框架入门认知

ThinkPHP是由上海顶想信息科技有限公司开发的开源PHP MVC框架,自2006年发布第一个版本以来,已经迭代到了最新的TP8版本,适配PHP7.4到PHP8.2的主流版本,相较于其他PHP框架,TP的优势非常明显:

  1. 语法贴近原生PHP:对于有基础PHP开发经验的开发者来说,几乎不需要额外学习就能快速上手;
  2. 内置丰富的功能组件:自带缓存、验证、日志、队列、中间件等常用模块,无需额外引入第三方扩展就能完成大部分开发需求;
  3. 完善的文档与社区:官方文档覆盖了从基础到进阶的所有知识点,国内开发者社区活跃度高,遇到问题很容易找到解决方案;
  4. 轻量化部署:框架本身体积小巧,部署到服务器时无需复杂的配置,适合快速开发中小型项目。

环境搭建与TP框架安装

在开始学习之前,我们需要先准备好开发环境:

  1. 基础运行环境:PHP7.4及以上版本、Composer依赖管理工具、Web服务器(推荐使用Nginx或Apache,新手也可以用XAMPP、WAMP集成环境快速搭建)。
  2. 安装Composer:Composer是PHP的包管理工具,TP框架的安装需要通过Composer完成,可以直接访问Composer官网下载安装包,按照提示完成安装即可。

具体安装步骤

  1. 打开终端(Windows用户可以使用CMD或PowerShell),执行以下命令创建TP项目:
    composer create-project topthink/think tp8

    这条命令会自动下载最新版本的ThinkPHP框架,并创建名为tp8的项目目录。

  2. 进入项目目录并启动内置开发服务器:
    cd tp8
    php think run

    启动成功后,在浏览器中访问http://localhost:8000,如果看到ThinkPHP的欢迎页面,说明框架安装成功。

项目目录结构解析

TP8的项目目录结构清晰易懂,新手需要先熟悉几个核心目录:

  • app/:存放应用的业务代码,包括控制器、模型、视图、验证器等;
  • config/:存放所有配置文件,包括数据库、路由、缓存等配置;
  • public/:项目的入口目录,只有index.php这一个入口文件,所有请求都会经过这里转发;
  • runtime/:框架自动生成的缓存、日志、会话文件目录,无需手动修改;
  • vendor/:Composer安装的第三方依赖包目录,不要手动修改其中的文件。

路由与控制器基础操作

路由是TP框架的核心功能之一,负责将用户的HTTP请求映射到对应的控制器方法中,TP支持自动路由和手动定义路由两种方式,新手可以先从手动定义路由开始学习。

手动定义路由

打开route/app.php文件,这是框架默认的路由配置文件,我们可以在这里定义所有的路由规则。

use think\facade\Route;
// 定义一个GET请求的路由,访问http://localhost:8000/hello会执行index控制器的hello方法
Route::get('hello', 'index/hello');
// 带参数的路由,访问http://localhost:8000/hello/TP会将TP作为参数传入hello方法
Route::get('hello/:name', 'index/hello');

创建第一个控制器

app/controller/目录下创建Index.php文件,这是框架默认的首页控制器:

<?php
namespace app\controller;
use think\Controller;
class Index extends Controller
{
    // 对应路由定义的hello方法
    public function hello($name = 'World')
    {
        // 向视图模板传递参数
        $this->assign('name', $name);
        // 渲染视图模板
        return $this->fetch();
    }
}

创建视图模板

app/view/目录下创建hello.html文件,这是对应控制器方法的视图文件:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">Hello TP</title>
</head>
<body>
    <h1>Hello, <?php echo $name; ?>!</h1>
    <!-- 也可以使用TP内置的模板引擎语法:<h1>Hello, {$name}!</h1> -->
</body>
</html>

重启开发服务器后,访问http://localhost:8000/hello/TP就能看到Hello, TP!的页面了。

数据库操作实战

TP框架内置了强大的数据库操作功能,支持原生SQL、查询构造器和ORM模型三种操作方式,极大简化了数据库开发流程。

数据库配置

打开config/database.php文件,修改数据库连接信息:

return [
    // 数据库类型
    'type'        => 'mysql',
    // 服务器地址
    'hostname'    => '127.0.0.1',
    // 数据库名
    'database'    => 'tp_test',
    // 数据库用户名
    'username'    => 'root',
    // 数据库密码
    'password'    => 'root',
    // 数据库端口
    'hostport'    => '3306',
    // 数据库编码默认采用utf8mb4
    'charset'     => 'utf8mb4',
];

创建名为tp_test的数据库,并新建一个user表:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `username` varchar(50) NOT NULL COMMENT '用户名',
  `email` varchar(100) NOT NULL COMMENT '邮箱',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

使用模型操作数据库

TP的模型层负责封装数据库操作逻辑,我们可以创建一个User模型来操作user表: 在app/model/目录下创建User.php文件:

<?php
namespace app\model;
use think\Model;
class User extends Model
{
    // 指定数据表名称,如果模型名和表名一致可以省略这一行
    protected $name = 'user';
    // 自动写入创建时间
    protected $autoWriteTimestamp = 'datetime';
    protected $createTime = 'create_time';
}

常见数据库操作示例

在控制器中使用模型完成增删改查操作:

// 查询所有用户
public function list()
{
    $userList = User::select();
    $this->assign('userList', $userList);
    return $this->fetch();
}
// 添加用户
public function add()
{
    $data = [
        'username' => 'zhangsan',
        'email' => 'zhangsan@example.com'
    ];
    // 使用模型新增数据
    $user = User::create($data);
    return '新增用户成功,用户ID:' . $user->id;
}
// 更新用户信息
public function edit($id)
{
    $user = User::find($id);
    $user->username = 'lisi';
    $user->save();
    return '更新用户成功';
}
// 删除用户
public function delete($id)
{
    User::destroy($id);
    return '删除用户成功';
}

你还可以使用查询构造器完成更复杂的查询操作,

// 查询年龄大于18的用户
$userList = User::where('age', '>', 18)->select();
// 模糊查询用户名包含'张'的用户
$userList = User::where('username', 'like', '%张%')->select();
// 分页查询
$userList = User::paginate(10);

中间件与权限控制

中间件是TP框架中用于处理HTTP请求的中间层,可以用于验证用户登录、过滤请求参数、记录日志等操作,例如我们可以创建一个登录验证中间件,拦截未登录的用户访问需要权限的页面。

创建中间件

执行以下命令生成登录验证中间件:

php think make:middleware Auth

生成的中间件文件位于app/middleware/Auth.php,修改其中的handle方法:

public function handle($request, \Closure $next)
{
    // 判断session中是否存在用户信息
    if (!session('?user')) {
        return redirect('/login')->with('error', '请先登录');
    }
    return $next($request);
}

注册中间件

config/middleware.php文件中注册中间件

从零基础到实战,TP(ThinkPHP)全流程入门教程