
要使用 ThinkPHP 框架,先得把环境搭好。咱得先确认 PHP 版本,官方推荐用 PHP 8.0 以上,这是因为新版本的 PHP 性能更好,还支持一些新特性,像 JIT 编译器就能提升执行速度。要是你的 PHP 版本不够,赶紧升级,不然可能会遇到兼容性问题。
composer
,要是能看到版本信息,那就说明安装成功了。fileinfo
、PDO
、MBString
这些扩展都得开启。你可以打开php.ini
文件,把对应扩展前面的分号去掉,保存后重启服务器。要是不知道php.ini
在哪,在命令行里输入php --ini
就能找到路径。环境搞定后,就可以开始安装 ThinkPHP 8 了。打开命令行,切换到你想安装项目的目录,然后输入
composer create-project topthink/think tp8
。这里tp8
是项目目录名,你可以自己改。composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
,这样就能用阿里云的镜像加速下载了。ext-fileinfo
不满足,可以试试composer update --ignore-platform-req=ext-fileinfo --with-all-dependencies
,强制更新依赖。安装完成后,进入项目目录,输入php think run
,启动内置服务器,访问http://localhost:8000
,要是能看到 ThinkPHP 的欢迎页面,那就说明安装成功了。ThinkPHP 的路由功能很强大,能把 URL 请求映射到对应的控制器和方法。路由配置文件在
application/route.php
里。最基本的配置就是指定 URL 路径和控制器方法的对应关系,比如Route::get('hello', 'index/hello')
,这样访问/hello
就能调用Index
控制器的hello
方法。:参数名
的形式,比如Route::get('product/:id', 'product/detail')
。在控制器里,通过$id
就能获取这个参数。还能给参数加上约束,比如->pattern(['id' => '\d+'])
,这样就只允许数字类型的参数了。Route::get('/^year\/(\d{4})\/(\d{2})\/(\d{2})$/','index/day?year=:1&month=:2&day=:3')
,这样就能匹配year/2025/06/18
这样的 URL,并把参数传递给控制器。为了方便管理路由,可以使用路由分组。比如
Route::group('admin', function() { Route::get('user', 'admin/user/index'); Route::get('product', 'admin/product/index'); });
,这样所有以admin
开头的 URL 都会被分到这个组里,对应的控制器方法也在admin
模块下。Route::get('profile', 'user/info')->name('user.profile')
,之后就能通过路由名称生成 URL,避免硬编码。在模板里可以用url('@user.profile')
来生成对应的 URL。Route::group('api', ['prefix' => 'v1', 'middleware' => 'CheckAuth'], function() { // 路由定义 });
,这样组里的路由都会加上v1
前缀,并且会经过CheckAuth
中间件的处理。中间件可以在请求到达控制器之前或之后执行一些逻辑,比如登录检测、跨域处理。创建中间件很简单,在命令行里输入
php think make:middleware CheckAuth
,会在app/middleware
目录下生成一个中间件类。handle
方法里,你可以写具体的逻辑。比如检查用户是否登录,要是没登录就重定向到登录页面。中间件可以全局注册,在app/middleware.php
里添加中间件类名就行,这样所有请求都会经过这个中间件。Route::get('admin/login', 'admin/login')->middleware(\app\middleware\CheckAuth::class)
,这样只有访问admin/login
这个路由时才会执行CheckAuth
中间件。中间件还能组合使用,实现更复杂的逻辑。安装时要是遇到 SSL 连接超时的问题,可能是
fileinfo
扩展没开启。打开php.ini
,找到extension=fileinfo
,把前面的分号去掉,保存后重启服务器。config/app.php
里设置app_debug
为true
,这样会显示更详细的错误信息,方便排查问题。BaseController
类。为了提高性能,可以开启路由缓存。在生产环境中,输入
php think route:cache
,会生成缓存文件,减少路由解析时间。要是修改了路由配置,记得输入php think route:clear
清理缓存。GET
请求获取资源,POST
请求创建资源,PUT
请求更新资源,DELETE
请求删除资源。这样不仅规范,还方便前端调用。