我的编程空间,编程开发者的网络收藏夹
学习永远不晚

写给使用thinkphp 6 的初级使用者 更快更好更优雅的使用 think tp6教程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

写给使用thinkphp 6 的初级使用者 更快更好更优雅的使用 think tp6教程

安装think

之前说过thinkphp 6 的安装 这里就不在叙述

think安装教程

如果学过 之前的 thinkphp 3.2.3 - thinkphp 5.1 的同学 在学习thinkphp 6上 可能会有优势~ 但仅限于语法优势
tp3.2.3 - tp6 全部 基于 MAC 逻辑开发

什么是MAC?

mac 为
M -> model 模型层 即连接数据库的模型
a -> action 方法层 作为主要的前后端 交流媒介
c -> controller 控制器层 控制器层 作为 放入方法层的主要方式
如: 我们在 thinkphp 项目根目录/app/ 中 创建一个 名为 admin 的后台应用 下的Index控制器 的 index 方法:

控制器层

declare (strict_types = 1);namespace app\admin\controller;use think\Request;class Index extends \app\common\controller\AdminBase{// 我是一个方法层public function index(){echo 'hello thinkphp world'}}

那么我们在访问 http://localhost/admin 的时候 将会在页面 输出 hello thinkphp worl

当然 使用TP6 的同学 需要 安装 多应用
composer require topthink/think-multi-app (多应用部署)

使用语法创建 控制器

php think make:controller admin@Index
即 php think 创建:控制器 应用名@控制器名称

安装后默认使用单应用模式部署,目录结构如下:

├─app 应用目录│  ├─controller         控制器目录│  ├─model              模型目录│  ├─view               视图目录│  └─ ...               更多类库目录│├─public                WEB目录(对外访问目录)│  ├─index.php          入口文件│  ├─router.php         快速测试文件│  └─.htaccess          用于apache的重写│├─view                  视图目录├─config                应用配置目录├─route                 路由定义目录├─runtime               应用的运行时目录

也许有人会疑惑 为什么 在tp6 之前 的 5版本 和 3.2.3 版本 不需要?
因为 tp6 为了做到更灵活 除了一些必要的配置 应用 缓存 路由 等 统统都放到的vendor Composer类库目录 当中
可以理解为 tp6 不在需要 原有的 项目\think 目录了 它统统都以vendor 的形式调用
也就是说 如果 你在tp6 中使用 视图方法 view 这里将不会生效 除非你安装它

我会在项目最后 放入 一个项目所需要的全部 composer 类库

模型层

如: 你创建了一个 mysql 为: turing_user 表
那么 你在thinkphp目录 app controller 或者其他 app 下的应用中 创建了一个 model 的文件夹
如: 在 app/common/model/User 中创建了一个 model层 它的定义 可以假设为 连接数据库语法
select * from turing_user 语法链接
模型层 可以 select update delete 等语法处理

基础模型层预览

declare (strict_types = 1);namespace app\common\model;use think\Model;class User extends Model{}

使用命令快速创建
php think make:model common@User

如何更优雅使用thinkphp 6?

1. 控制器 使用:

一般 大部分人 都会觉得 既然是控制器 那 我们把所有操作都放到 控制器下的方法中去操作 多省事儿其实 这么写代码 往往会一个控制器中 出现 成千上万行代码 同样不方便维护那要如何写 才方便?首先 我们需要一个继承类 这个类 将作为 这一系列的前置操作内容use app\common\controller\AdminBase;我们可以建立一个 logic 逻辑业务  thinkphp 6 并没有强制你在 控制器写 逻辑业务如: 我们写一个简单的登录:
declare (strict_types = 1);namespace app\admin\controller;use think\Request;// 公共控制器 建议use app\common\controller\AdminBase;// 实例化一个登录的逻辑业务use app\admin\logic\AdminLogin;class Login extends AdminBase{// 登录操作public function login(){// 动态调用$login = ( new AdminLogin ) :: login();}}

登录的逻辑业务

定义公共逻辑层

namespace app\common\logic;class BaseLogic{        protected static $error;        protected static $returnCode = 0;    protected static $returnData;        public static function getError() : string    {        if (false === self::hasError()) {            return '系统错误';        }        return self::$error;    }        public static function setError($error) : void    {        !empty($error) && self::$error = $error;    }        public static function hasError() : bool    {        return !empty(self::$error);    }}

公共逻辑业务

declare (strict_types = 1);namespace app\admin\logic;use think\Request;// 公共控制器 建议use app\common\logic\BaseLogic;// 实例化User 数据库use app\common\model\User;class Login extends BaseLogic{// 登录操作 设置为静态类 并设置返回方式  由于 tp 6 find 方法 返回的是 object 类public static function login()  : Object{$User = (new User) -> where('username',Request()->param('username')) ->find();if($User->password != Request()->param('password')) {self::$error = '账号或者密码错误';return false;}return $User;}}

模型中的操作

declare (strict_types = 1);namespace app\common\model;// 公共定义类use app\common\model\BaseLogic;class User extends BaseLogic{// 模型中 尽量不要些逻辑业务 如果必要 可以使用 模型事件public static function onAfterRead( object $model){//查询后事件}public static function onBeforeInsert( object $model){//新增前事件}public static function onAfterInsert( object $model){//新增后事件}public static function onBeforeUpdate( object $model){//更新前事件}// 查询业务 尽量使用 模型查询 中的搜索器// 在逻辑中 原语法 // $User = (new User) -> where('username',Request()->param('username')) ->find()// 带搜索器后 (new User) ->  withSearch(['username',..更多],['username'=>Request()->param('username')],,更多)public function searchUsernameAttr ( object $query , $value  , $data ){$query -> where('username','like',"{$value}");}// 获取器 如 mysql 中 有个 type字段 为当前用户是否已禁用 0 禁用 1 启用 我们向告诉前台 这个是中文的禁用 或启用 时public function getTypeAttr($value){// 这里 可以时任何内容 比如 // 你要转json return json_encode($value);// 转数组  return json_decode($value , true); $type = ['禁用','启用'];return $type[$value];}}

模型操作 参考

tp6 模型操作

搜索器

tp6 搜索器

模型获取器

tp6 获取器

模型修改器

tp6 修改器

模型事件描述

事件 描述 事件方法名
after_read 查询后 onAfterRead
before_insert 新增前 onBeforeInsert
after_insert 新增后 onAfterInsert
before_update 更新前 onBeforeUpdate
after_update 更新后 onAfterUpdate
before_write 写入前 onBeforeWrite
after_write 写入后 onAfterWrite
before_delete 删除前 onBeforeDelete
after_delete 删除后 onAfterDelete
before_restore 恢复前 onBeforeRestore
after_restore 恢复后 onAfterRestore

想知道更多?

这里有个示例项目
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AmdkUl4S-1676600135050)(null)]

来源地址:https://blog.csdn.net/chinanes/article/details/129078371

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

写给使用thinkphp 6 的初级使用者 更快更好更优雅的使用 think tp6教程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录