ThinkPHP 8.0 新手七天入门强调每日聚焦一个可验证小目标:第1天搭环境并看到欢迎页,第2天写控制器返回“Hello World”。

ThinkPHP 8.0 新手七天入门,关键不在“学完所有”,而在每天聚焦一个可验证的小目标:环境跑通、路由响应、数据库读写、接口返回、模板渲染、中间件控制、上线部署。七天不求全,但求每一步都亲手敲出来、跑起来、看得到结果。
第1天:5分钟搭好开发环境,看到欢迎页
这是最易卡住的一步,别跳过验证环节:
- 执行 php -v 确认版本 ≥ 8.0.0;若报错,说明PHP未装或PATH没配对,需重装并新开命令行窗口再试
- 运行 php -m | findstr "mbstring openssl fileinfo"(Windows)或 php -m | grep -E "mbstring|openssl|fileinfo"(Mac/Linux),缺任一扩展都要去 php.ini 中取消对应行前的分号
- 用 composer create-project topthink/think tp8-demo . 创建项目(注意末尾的英文句点)
- 进项目根目录,执行 php think run,浏览器打开 http://localhost:8000 ——看到“ThinkPHP V8.0”即成功
第2天:写第一个控制器,返回“Hello World”
不要直接改 welcome 页面,而是新建标准控制器:
- 在 app/controller 下新建 Index.php,内容如下:
class Index
{
public function hello()
{
return 'Hello World';
}
}
- 在 route/app.php 中注册路由:Route::get('hello', 'Index@hello');
- 访问 http://localhost:8000/hello,页面显示纯文本“Hello World”即完成
第3天:连接MySQL,查出一条用户数据
先确保数据库服务已启动,再配置连接:
立即学习“PHP免费学习笔记(深入)”;
- 编辑 config/database.php,填入你的本地MySQL账号密码(host建议用 127.0.0.1,非 localhost)
- 建一个简单表:CREATE TABLE user (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50)); INSERT INTO user(name) VALUES ('张三');
- 在 app/controller/Index.php 的 hello 方法里加两行:
return Db::name('user')->find();
- 刷新 /hello 页面,应看到一个关联数组,含 id 和 name 字段
第4天:用模型操作数据,返回JSON接口
把数据库逻辑从控制器中抽离,更规范也更易复用:
- 在 app/model 下新建 User.php,内容为:
use think\Model;
class User extends Model
{
}
- 修改控制器方法:return \app\model\User::find(1);
- 加上头部声明:header('Content-Type: application/json');
- 访问时将自动输出格式化 JSON,可用 Postman 或浏览器开发者工具 Network 栏查看
第5天:渲染HTML页面,展示用户列表
让后端不只是返回数据,还能生成完整网页:
- 在 app/view/index 下新建 index.html,写一个简单表格结构
- 控制器中调用视图:return view('index/index', ['users' => \app\model\User::select()]);
- 模板中用 {: $users[0]['name']} 或 {volist name="users" id="user"}{: $user.name}{/volist} 输出
- 访问 /index(记得先在 route/app.php 中配好该路由)
第6天:加登录中间件,拦截未登录请求
理解请求生命周期,掌握权限控制基础:
- 在 app/middleware 下新建 Auth.php,返回 true 或 redirect
- 在 app/middleware.php 中为某个路由组添加:'auth' => \app\middleware\Auth::class
- 测试:未登录时访问受保护路由,应跳转到登录页;登录后(例如设 session)再访问,正常显示
第7天:打包上传宝塔,让别人也能访问
真实项目终要上线,这步必须动手做一次:
- 压缩整个项目(除 vendor 和 runtime 外,其他全打进去),上传至宝塔网站根目录(如 /www/wwwroot/tp8)
- 站点设置中,“运行目录”务必改为 /public,否则 404
- 伪静态选 thinkphp,关闭防跨站(open_basedir)
- 删除根目录下的 .env,并将 APP_DEBUG 设为 false
- 给 runtime 目录赋写权限:chmod -R 755 runtime(宝塔界面可一键设置)



















