简介
ThinkPHP 是一个免费开源的、快速、简洁的面向对象的轻量级 PHP 开发框架,旨在支持敏捷的 Web 应用开发,并简化企业级应用的开发流程。
自诞生以来,ThinkPHP 始终坚持简洁实用的设计理念,在追求高性能与极简代码的同时,更加注重开发的易用性。该框架遵循 Apache2 开源协议发布,这意味着你可以免费使用 ThinkPHP,并允许基于 ThinkPHP 开发的应用进行开源或商业化发布与销售。
本文档基于 ThinkPHP 5.1 版本,相关内容可参考官方文档:
https://www.kancloud.cn/manual/thinkphp5_1
框架
框架是由一系列常量、方法、类等构成的代码集合,本质上是一个半成品的应用,仅提供项目开发所需的底层架构,不包含具体的业务逻辑。
框架通常包含多个优秀的设计模式,例如:
- 单例模式(Singleton)
- 工厂模式(Factory)
- 活动记录模式(Active Record,简称 AR)
这些模式帮助开发者更高效地构建结构清晰、可维护性强的应用系统。
web 开发阶段
第一阶段:混合编程阶段(混编)
- 特点:PHP 与 HTML 混杂于同一文件中。
- 优点:开发效率较高。
- 缺点:维护困难,前后端职责不清,前端需理解后端代码,后端也常需处理前端逻辑。
第二阶段:模板引擎阶段
- 特点:通过模板引擎将前端展示与后端逻辑解耦。
- 优点:提高代码结构清晰度,前后端分工明确。
- 缺点:比混编模式效率略低。
第三阶段:MVC 架构阶段
- 特点:采用 MVC 模式强制分离输入(控制器)、处理(模型)与输出(视图)。
- 优点:极大提升了项目的可维护性和可扩展性。
- 缺点:相较前两种模式,运行效率略低。
MVC
MVC 是 Model(模型)、View(视图)和 Controller(控制器)三部分的缩写,是一种经典的软件架构设计模式。
模型(Model)
模型层负责封装与业务逻辑相关的数据以及对数据的处理方法。模型可以直接访问数据源(如数据库),但不依赖视图(View)和控制器(Controller)。当模型中的数据发生变化时,会通过某种机制(如事件或回调)通知视图层,以实现数据驱动的 UI 更新。
视图(View)
视图负责数据的展示与用户交互,通常根据模型提供的数据来渲染界面。在视图中不包含业务逻辑。为了响应模型的变化,视图需提前注册到模型上,便于接收更新通知,实现界面的自动刷新。
控制器(Controller)
控制器起到协调模型与视图的作用,是应用程序流程的核心控制部分。它响应用户输入和模型变化,处理事件,并将用户操作转化为对模型的调用或对视图的更新。控制器通常从视图接收数据,传递给模型处理,并最终返回处理结果供视图展示。
安装
安装 Apache、MySQL、PHP 环境
执行以下命令安装所需环境:
sudo apt-get update
sudo apt-get install apache2
sudo systemctl restart apache2
sudo apt-get install php8.1 libapache2-mod-php8.1 php8.1-mysql
sudo a2enmod php8.1
sudo systemctl restart apache2
sudo apt-get install mysql-server mysql-client
配置 MySQL
测试 MySQL 是否安装成功:
mysql -u root -p
为了方便管理数据库,我们通常使用图形化工具。为支持远程连接,需要创建一个新用户:
-- 创建用户 user1,允许从任意 IP(%)连接,并设置密码
CREATE USER 'user1'@'%' IDENTIFIED BY '123456';
-- 授权 user1 对某个数据库(如 testdb)拥有所有权限
GRANT ALL PRIVILEGES ON testdb.* TO 'user1'@'%';
-- 刷新权限表
FLUSH PRIVILEGES;
我使用的是 DBeaver,你也可以使用其他图形化数据库管理工具。
注意:由于 MySQL 的安全机制,远程连接可能遇到连接受限、权限不足等问题。具体情况因系统和配置不同而异,建议通过搜索引擎或 AI 工具查找对应的解决方案。
Apache2 服务验证
使用以下命令检查 Apache 服务是否正常运行:
sudo systemctl status apache2
在浏览器访问 http://localhost:80
,若出现如下页面说明 Apache 已正常启动:
配置虚拟主机
虚拟主机是 Apache 的一种配置机制,用于在同一服务器上运行多个网站。默认情况下,Apache 会启用一个默认虚拟主机,所有未配置的域名请求都会落到此默认站点上。
如果你只运行一个简单网站,只需将网站内容上传至默认目录:/var/www/html
接下来,请切换到该目录并下载 ThinkPHP5 项目文件。
验证 PHP 安装
使用以下命令验证 PHP 是否正常运行:
php -v
Git安装
推荐使用 Git 方式安装 ThinkPHP,也可以采用其他官方推荐的方式。
安装也需要分两步操作,首先克隆下载应用项目仓库
git clone https://github.com/top-think/think tp5
然后切换到tp5
目录下面,再克隆核心框架仓库(注意目录名称不要改变):
git clone https://github.com/top-think/framework thinkphp
安装 PHP 依赖
确保系统中已安装 Composer,然后在 tp5
项目根目录下执行:
composer install
此命令将根据 composer.lock
文件安装所有依赖,确保项目运行环境的一致性。
启动项目
在浏览器中访问以下地址即可打开 ThinkPHP 项目首页:
http://localhost/tp5/public/
基础操作
入口文件
项目的入口文件为 public
目录下的 index.php
:
该文件会进一步调用 controller
目录下的控制器逻辑:
入口文件的主要作用
- 定义全局常量;
- 配置项目中各重要目录的路径;
- 加载框架的引导文件;
- 建议不要在入口文件中编写业务代码,保持职责单一。
访问流程
ThinkPHP 基于典型的 MVC(模型-视图-控制器)设计架构,完整的访问流程如下:
- 用户请求发送至应用入口(index.php);
- 请求由 Controller(控制器) 接收并处理;
- Controller 调用 Model(模型),进行数据的读取或写入;
- Controller 将数据传递至 View(视图);
- View 渲染内容,最终响应返回给用户。
URL 访问
- 普通模式
URL 参数方式访问,结构清晰:
http://127.0.0.1/tp5/public/index.php?m=index&c=index&a=index
m
:模块名(Module)
c
:控制器(Controller)
a
:方法(Action)
- PATHINFO 模式
更加友好、便于 SEO 的路径形式:
http://127.0.0.1/tp5/public/index.php/index/index/index
- REWRITE 模式
隐藏入口文件 index.php
,需服务器开启 URL 重写功能:
http://127.0.0.1/tp5/index/index/index
- 兼容模式
兼容 PATHINFO 和普通模式的混合形式,适用于不支持 PATHINFO 的环境:
http://127.0.0.1/tp5/public/index.php?s=/admin/index/index
说明:s
参数的名称可在 config.php
文件中通过 pathinfo_var
参数设置。