杰瑞科技汇

ThinkPHP5入门教程,如何快速上手开发?

ThinkPHP 5 入门教程:从零开始构建你的第一个应用

目录

  1. 前言:什么是 ThinkPHP?
  2. 环境准备:你需要什么?
  3. 第一步:安装 ThinkPHP 5
  4. 第二步:项目结构初探
  5. 第三步:配置数据库
  6. 第四步:创建数据表
  7. 第五步:创建模型
  8. 第六步:创建控制器
  9. 第七步:创建视图
  10. 第八步:定义路由
  11. 第九步:运行与访问
  12. 总结与下一步

前言:什么是 ThinkPHP?

ThinkPHP 是一个开源的、快速、简单的面向对象的轻量级 PHP 开发框架,它遵循 Apache2 开源协议发布,是为了敏捷 Web 应用开发和简化企业级应用开发而诞生的。

ThinkPHP5入门教程,如何快速上手开发?-图1
(图片来源网络,侵删)

ThinkPHP 就像一个“工具箱”或“脚手架”,它提供了一套规范和现成的工具,让你可以不用从零开始写所有代码,从而更专注于业务逻辑的开发,提高开发效率。

ThinkPHP 5 是一个里程碑式的版本,它引入了更多现代化的特性,如:

  • 更好的性能
  • 严格遵循 PSR 标准 (PHP Standards Recommendation)
  • 依赖注入容器
  • 更简洁的 API 设计

环境准备:你需要什么?

在开始之前,请确保你的电脑上已经安装了以下软件:

  • PHP: 版本要求 >=5.6.0 (推荐 0+,因为性能更好)
  • Composer: PHP 的依赖管理工具,用于安装 ThinkPHP 框架。
  • Web 服务器: Apache 或 Nginx (这里我们推荐使用 PHP 内置 Web 服务器,对于入门最简单)。
  • 数据库: MySQL (5.6+) 或 MariaDB。

如何检查? 打开你的终端(Windows下是CMD或PowerShell,Mac/Linux下是Terminal),输入以下命令:

ThinkPHP5入门教程,如何快速上手开发?-图2
(图片来源网络,侵删)
php -v  # 查看PHP版本
composer --version # 查看Composer版本

如果都显示版本号,说明环境已经准备好了。

第一步:安装 ThinkPHP 5

ThinkPHP 官方推荐使用 Composer 来安装,因为它可以自动处理框架的依赖关系。

  1. 打开终端,进入你希望存放项目的目录(D:\www/var/www/html)。

  2. 执行安装命令

    ThinkPHP5入门教程,如何快速上手开发?-图3
    (图片来源网络,侵删)
    composer create-project topthink/think tp5
    • composer create-project: 这是 Composer 创建新项目的命令。
    • topthink/think: 这是 ThinkPHP 5 在 Packagist (PHP包仓库) 上的名称。
    • tp5: 这是你要创建的项目文件夹名。
  3. 等待安装完成,这个过程会下载 ThinkPHP 框架及其所有依赖包,可能需要几分钟时间。

安装成功后,你的项目目录下会出现一个名为 tp5 的文件夹,里面就是 ThinkPHP 5 的完整项目结构。

第二步:项目结构初探

用你的代码编辑器(如 VS Code, PhpStorm)打开 tp5 文件夹,你会看到以下主要目录和文件:

tp5/
├── app/              # 应用目录,我们所有的业务代码都写在这里
│   ├── controller/    # 控制器目录:处理用户请求,调用模型和视图
│   ├── model/         # 模型目录:与数据库交互,处理数据
│   └── view/          # 视图目录:存放 HTML 模板文件
├── config/           # 配置目录:存放各种配置文件(数据库、路由等)
├── public/           # 入口目录:Web 服务器的访问根目录
│   └── index.php      # 应用入口文件
├── route/            # 路由目录:定义 URL 访问规则
├── thinkphp/         # 框架核心目录
├── vendor/           # Composer 依赖包目录
├── .env              # 环境配置文件(用于配置数据库连接等)
└── composer.json     # 项目依赖配置文件

核心思想:

  • 入口文件 public/index.php: 所有请求都通过这个文件进入应用。
  • app 目录: 应用的核心,分为 M (Model)、V (View)、C (Controller) 三层。
  • config 目录: 集中管理配置,方便维护。

第三步:配置数据库

ThinkPHP 5 使用 .env 文件来配置数据库信息,这样做的好处是敏感信息不会暴露在代码中。

  1. 在项目根目录找到 .env.example 文件,将其复制一份并重命名为 .env

  2. 用编辑器打开 .env 文件,找到数据库配置部分,并填入你自己的数据库信息:

    [APP]
    DEBUG = true
    [DATABASE]
    TYPE = mysql
    HOSTNAME = 127.0.0.1
    DATABASE = tp5_db       # 数据库名,待会我们创建
    USERNAME = root         # 数据库用户名
    PASSWORD = your_password # 数据库密码
    HOSTPORT = 3306
    CHARSET = utf8mb4
    DEBUG = true

第四步:创建数据表

我们需要在数据库中创建一个数据表来存储数据,我们可以使用 ThinkPHP 5 提供的命令行工具来生成。

  1. 连接数据库: 使用你喜欢的 MySQL 客户端工具(如 Navicat, phpMyAdmin, 或者命令行),登录到你的 MySQL 服务器。

  2. 创建数据库: 执行 SQL 语句创建一个名为 tp5_db 的数据库。

    CREATE DATABASE tp5_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  3. 使用命令行生成数据表迁移文件:

    • 回到终端,进入你的 tp5 项目目录。
    • 执行 ThinkPHP 的命令:
      php think make:migrate create_user_table
    • 这条命令会在 database/migrations/ 目录下创建一个新的迁移文件,文件名类似 20250101000001_create_user_table.php
  4. 编辑迁移文件: 打开这个新生成的文件,在 up() 方法中编写创建表的 SQL 代码:

    // database/migrations/..._create_user_table.php
    public function up()
    {
        Schema::create('user', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name', 50)->comment('用户名');
            $table->string('email', 100)->unique()->comment('邮箱');
            $table->timestamps(); // 自动创建 created_at 和 updated_at 字段
        });
    }
  5. 执行迁移: 在终端执行以下命令,ThinkPHP 会自动执行 up() 方法中的 SQL 语句来创建数据表。

    php think migrate:run

    如果看到 Migration successed.,说明数据表 user 已经成功创建!

第五步:创建模型

模型负责与数据库表进行交互,我们为 user 表创建一个对应的模型。

在终端执行:

php think make:model app/model/User

这会在 app/model/ 目录下创建 User.php 文件,默认情况下,这个文件已经有了基本的结构,并且会自动关联到 user 表(遵循驼峰命名转下划线命名规则,User -> user)。

你可以稍微修改一下,添加一些可填充字段,方便后续批量赋值:

// app/model/User.php
namespace app\model;
use think\Model;
class User extends Model
{
    // 设置字段信息
    protected $schema = [
        'id'          => 'int',
        'name'        => 'string',
        'email'       => 'string',
        'created_at'  => 'datetime',
        'updated_at'  => 'datetime',
    ];
    // 设置自动时间戳
    protected $autoWriteTimestamp = true;
    // 设置允许 mass-assignment 的字段
    protected $allowField = ['name', 'email'];
}

第六步:创建控制器

控制器是用户请求的入口,它接收请求,调用模型获取数据,然后加载视图展示给用户。

为用户管理创建一个控制器:

php think make:controller app/controller/User

这会在 app/controller/ 目录下创建 User.php 文件,我们来编写一个 index 方法,用于显示所有用户列表:

// app/controller/User.php
namespace app\controller;
use app\BaseController;
use app\model\User; // 引入User模型
class User extends BaseController
{
    public function index()
    {
        // 1. 从User模型中获取所有用户数据
        $users = User::select();
        // 2. 将数据传递给视图
        // view() 函数用于渲染模板
        // 'user/index' 对应 app/view/user/index.html 文件
        // ['users' => $users] 是传递给模板的变量
        return view('user/index', ['users' => $users]);
    }
}

第七步:创建视图

视图是展示数据的 HTML 模板,我们需要创建一个目录和文件来承接控制器传递过来的数据。

  1. app/view/ 目录下创建一个名为 user 的子目录。
  2. app/view/user/ 目录下创建一个名为 index.html 的文件。

编辑 app/view/user/index.html 文件内容:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">用户列表</title>
    <style>
        body { font-family: sans-serif; }
        table { border-collapse: collapse; width: 80%; margin: 20px auto; }
        th, td { border: 1px solid #dddddd; text-align: left; padding: 8px; }
        th { background-color: #f2f2f2; }
    </style>
</head>
<body>
    <h1 style="text-align: center;">用户列表</h1>
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>用户名</th>
                <th>邮箱</th>
                <th>创建时间</th>
            </tr>
        </thead>
        <tbody>
            {volist name="users" id="user"}
            <tr>
                <td>{$user.id}</td>
                <td>{$user.name}</td>
                <td>{$user.email}</td>
                <td>{$user.created_at}</td>
            </tr>
            {/volist}
        </tbody>
    </table>
</body>
</html>

模板引擎语法说明:

  • {volist name="users" id="user"}: 这是一个循环标签,name 指的是控制器传递过来的数组变量名,id 指的是循环时每个元素的临时变量名。
  • {$user.id}: 这是输出变量值的语法,$user 是循环变量,id 是它的属性。

第八步:定义路由

路由负责将 URL 请求映射到指定的控制器和方法,ThinkPHP 5 的路由非常灵活。

打开 route/app.php 文件,在最后添加一行代码:

// route/app.php
// ... 原有代码 ...
// 添加以下路由
Route::get('user', 'user/index');

这行代码的意思是:当用户访问 http://你的域名/user 这个 URL 时,系统会自动执行 app\controller\User 控制器中的 index 方法。

第九步:运行与访问

一切准备就绪!现在让我们启动项目。

  1. 启动 PHP 内置 Web 服务器: 在你的终端(确保在 tp5 项目根目录下)执行:
    php think run
  2. 查看输出信息: 你会看到类似下面的输出:
    <info>server run at: http://127.0.0.1:8000</info>
  3. 在浏览器中访问: 打开你的浏览器,访问上面显示的地址,并在后面加上我们定义的路由:
    http://127.0.0.1:8000/user

如果一切顺利,你应该能看到一个漂亮的用户列表页面!虽然目前列表是空的,但我们的框架已经成功运行并连接了数据库。

总结与下一步

恭喜你!你已经成功完成了 ThinkPHP 5 的入门教程,搭建了一个完整的 MVC 应用。

回顾一下我们做了什么:

  1. 安装了 ThinkPHP 5 框架。
  2. 熟悉了项目的基本结构。
  3. 配置了数据库连接。
  4. 使用命令行创建了数据表、模型、控制器和视图。
  5. 定义了路由来连接 URL 和控制器。
  6. 成功运行并访问了应用。

下一步可以学习什么?

  • CURD 操作: 学习如何创建、读取、更新和删除数据,在 User 控制器中添加 save() 方法来保存新用户。
  • 表单验证: 学习如何使用 ThinkPHP 的验证器来验证用户提交的数据。
  • 中间件: 了解如何使用中间件来处理如用户登录认证等公共逻辑。
  • 关联模型: 学习模型之间的关联关系(一对一、一对多、多对多)。
  • 使用模板引擎: 深入学习 ThinkPHP 的模板引擎,如 includeifswitch 等高级用法。

ThinkPHP 5 的官方文档是学习的最佳资源,地址是:https://www.kancloud.cn/manual/thinkphp5_1/content

希望这份教程对你有帮助,祝你学习愉快!

分享:
扫描分享到社交APP
上一篇
下一篇