Thinkphp命令行创建repository和transform层扩展包

前言

由于官方推荐的MVC架构在项目功能比较多的时候会导致controller层非常臃肿,不容易将代码复用,难以维护。所以现在很多程序员都喜欢将controller层拆分为controller、service、repository、model这几层甚至更多层次的目录进行开发,更容易复用代码。

  • 控制器层(Controller):负责接收参数、验证参数、调用各个模块的服务层(可以用事务包裹,用到其他服务的可以注入多个服务)、返回响应、返回视图等
  • 服务层(Service):负责具体的业务逻辑实现,将原本控制器的负责流程按模块拆分为一个个小的服务,方便给控制器层组合调用,一般不要跨模块调用服务,服务中可以调用本模块的仓库层方法
  • 仓库层(Repository):调用模型层封装一些负责的查询,方便服务层调用,一般负责只查询本模块的内容
  • 模型层(Model):只包含默认的表属性(表名、字段等)和联表关系

这是我开发的一个thinkphp框架命令行创建Repository和Transform Class(即仓库层和转化器,基于controller-service-repository目录架构)的扩展包

github地址:jian1098/tp-repository: thinkphp框架命令行创建Repository和Transform Class(即仓库层和转化器,基于controller-service-repository目录架构) (github.com)

如何使用

  • 1.安装扩展

    thinkphp5.*装1.0.1版本

    composer require jian1098/tp-repository:1.0.1
    

    thinkphp6以上装2.0.1版本

    composer require jian1098/tp-repository:2.0.1
    
  • 2.注册命令

    • thinkphp5.*

      application/command.php文件中添加两行

      return ['Jian1098\TpRepository\Command\Repository','Jian1098\TpRepository\Command\Transform','Jian1098\TpRepository\Command\Model',  //如果是tp5.0框架,需要make:model命令可以增加这一行实现
      ];
      
    • thinkphp6+

      config/console.php文件中添加两行

      return [// 指令定义'commands' => ['Jian1098\TpRepository\Command\Repository','Jian1098\TpRepository\Command\Transform',],
      ];
      

    配置完后,在命令行执行php think命令,可以看到增加了make:repositorymake:transform命令

      ...make:command      Create a new command classmake:controller   Create a new resource controller classmake:event        Create a new event classmake:listener     Create a new listener classmake:middleware   Create a new middleware classmake:model        Create a new model classmake:repository   Create a new repository classmake:service      Create a new service classmake:subscribe    Create a new subscribe classmake:transform    Create a new transform classmake:validate     Create a validate class...
    
  • 3.命令行创建文件

    # 创建repository
    php think make:repository TestRepository# 创建transform
    php think make:transform TestTransform
    

    执行上面的命令将创建文件application/common/repository/TestRepository.php(tp5)或 app\repository\TestRepository(tp6)

    TestRepository代码如下:

    <?phpnamespace app\repository;use think\App;
    use app\model\Test;
    use Jian1098\TpRepository\Repository;/*** Class TestRepository*/
    class TestRepository extends Repository
    {protected $model;public function __construct(){parent::__construct(new App());//绑定模型$this->model = new Test();}}
    

    TestTransform代码如下:

    <?phpnamespace app\transform;use Jian1098\TpRepository\Command\Transform;class TestTransform extends Transform
    {public function transform($items){return ['id'            => $items['id'],'createTime'    => $items['create_time'],'updateTime'    => $items['update_time'],];}
    }
    

    在控制器中调用

    <?php
    namespace app\controller;use app\BaseController;
    use app\repository\TestRepository;
    use app\transform\TestTransform;class Index extends BaseController
    {public function test(TestRepository $repository, TestTransform $transform){//使用repository查询数据$data = $repository->first(1);//使用转换器将查询结果处理echo json_encode($transform->transform($data), JSON_UNESCAPED_UNICODE);}
    }
    

更多

Thinkphp命令行创建Service(服务层)扩展包-CSDN博客

Thinkphp5.0命令行创建验证器validate类-CSDN博客

几个好用的Thinkphp第三方扩展-CSDN博客

更多扩展持续开发中…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/2216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【免费题库】华为OD机试 - 查找接口成功率最优时间段(Java JS Python C C++)

须知 哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持 文章目录 须知题目描述输入描述输出描述用例解题思路:Java代码:JS代码:Python代码:C代码:C++代码:题目描述 服务之间交换的接口成功率作为服务调用关键质量特性,某个时间段…

重温javascript --(二)函数

函数 一、定义 声明式 functon fn(){}表达式var fn function(){}(函数表达式一般指 匿名函数) 二、参数&#xff08;形参&#xff0c;实参&#xff09; arguments 类数组对象 表示函数的实参集合 arguments.callee—指向当前执行的函数 arguments.length—指向传递给当前函…

TypeScript学习笔记7-枚举

在 TypeScript 中&#xff0c;枚举&#xff08;Enum&#xff09;是一种数据类型&#xff0c;用于定义一组具名的常量值。 枚举可以帮助开发人员在代码中使用可读性更强的符号来表示固定的数值或状态。 枚举的定义类似于对象字面量&#xff0c;其中包含一组键值对&#xff0c;键…

工厂方法模式设计实验

【实验内容】 楚锋软件公司欲开发一个系统运行日志记录器&#xff08;Logger&#xff09;。该记录器可以通过多种途径保存系统的运行日志&#xff1a;例如通过文件记录或数据库记录&#xff0c;用户可以通过修改配置文件灵活地更换日志记录方式。在设计各类日志记录器时&#…

【智能算法】回溯搜索算法(BSA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2013年&#xff0c;P Civicioglu等人受到当前种群与历史种群之间的差分向量的引导启发&#xff0c;提出了回溯搜索算法&#xff08;Backtracking Search Algorithm, BSA&#xff09;。 2.算法原理…

刷题训练之二分查找

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;熟练掌握二分查找算法 > 毒鸡汤&#xff1a;学习&#xff0c;学习&#xff0c;再学习 ! 学&#xff0c;然后知不足。 > 专栏选自&#xff1a;刷题…

分析 MyBatis/MyBatis-Plus 慢 SQL 的分析组件 --SQL 慢镜️‍♀️

大家好&#xff01;我是聪ζ&#x1f331;我做了一个分析 MyBatis/MyBatis-Plus 慢 SQL 的分析组件 --SQL 慢镜&#x1f575;️‍♀️ GitHub仓库地址&#x1f680;: https://github.com/lhccong/sql-slow-mirror 点点 star 我的朋友们✨ 背景&#x1f9ca;&#xff1a; 大家…

(十五)C++自制植物大战僵尸游戏僵尸基类讲解

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/m0EtD 在游戏中,最重要的两个类别就是植物与僵尸。僵尸可以对植物进行攻击,不同的僵尸攻击方式可能会不同,但是不同又有许多相同的属性。在基类(父类)中定义僵尸共有属性,供派生类(子类)继承。 僵尸状态转换 僵尸…

【漏洞复现】润乾报表 servlet/dataSphereServlet 任意文件上传漏洞

0x01 产品简介 润乾报表是一个纯JAVA的企业级报表工具,润乾报表作为领先的企业级报表分析软件,提供了高效的报表设计方案、强大的报表展现能力、灵活的部署机制,以及支持强关联语义模型。这些功能使得润乾报表能够为企业级数据分析与商业智能提供高性能、高效率的报表系统解…

Nacos分布式配置中心

<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 https://…

Hive建表中对JSON格式的日志文件处理

【背景说明】 我正在搭建离线数仓&#xff0c;目前已经hive建表阶段&#xff0c;业务数据和(用于测试的)用户历史数据已采集到hdfs上。因用户行为日志都已JSON格式存储&#xff0c;因此需要在hive建表时指定相应格式 页面日志格式&#xff1a; {"common": { …

Android永不息屏和关闭锁屏

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…

kali——勒索病毒metasploit

我先来叙述一下大致流程&#xff1a; 1、使用mfs对 445端口进行攻击获得一系列权限 2、更新mfs版本 3、使用search 17_010对命令进行查看 4、use auxiliary/scanner/smb/smb_ms17_010使用该模块设置靶机set rhosts 靶机ip和设置本机监听端口 set lhost 0-65535 5、options…

数智亚运,为什么需要智能电子桌牌?

近日&#xff0c;杭州亚运会博物馆正式对公众开放&#xff0c;深度还原了杭州从申请办、筹办至举办亚运会的各个精彩历程。馆内有“亚运与杭州”、“亚运与亚洲”“亚运与未来”三大板块展示区&#xff0c;展示了大量亚运会使用过的实物&#xff0c;还有当时引人注目的数字科技…

53、图论-课程表

思路&#xff1a; 其实就是图的拓扑排序&#xff0c;我们可以构建一个图形结构&#xff0c;比如[0,1]表示1->0&#xff0c;对于0来说入度为1。 遍历结束后&#xff0c;从入度为0的开始遍历。引文只有入度为0的节点没有先决条件。然后依次减少1。直到所有节点入度都为0.然后…

开发同城O2O跑腿系统源码:构建高效便捷的本地服务平台教程

为了满足用户对便捷的需求&#xff0c;今天我们将一同探讨如何开发一个高效便捷的同城O2O跑腿系统&#xff0c;以构建一个功能全面、操作简单的本地服务平台。 一、确定需求和功能 在开发同城O2O跑腿系统之前&#xff0c;首先需要明确系统的需求和功能。用户可以通过该系统发布…

flutter笔记-hello dart

文章目录 1. 搭建环境2. 运行官方首个程序3. AS中运行iOSAndroid 语法简述1. 变量常量字符串补充 2. 集合3. 函数关于可选报错&#xff1a;匿名函数 4. 特殊运算符5. 类 dart 包 1. 搭建环境 环境的搭建在window和mac都差不多&#xff0c;都是从官网下载对应操作系统对应版本的…

某零售企业招聘管理体系搭建咨询项目

科学岗位分析&#xff0c;改善招聘流程&#xff0c;提高招聘及时率随着公司不断发展壮大&#xff0c;企业规模逐渐增大&#xff0c;部门设置也日益增多&#xff0c;因此对人员的需求也日益提高。但是目前该企业在人员招聘方面逐渐暴露出一些诸如岗位分析不到位、缺乏整体面试计…

开源博客项目Blog .NET Core源码学习(17:App.Hosting项目结构分析-5)

本文学习并分析App.Hosting项目中前台页面的作品展示页面和首页页面。 作品展示页面 作品展示页面总体上为上下布局&#xff0c;上方显示导航菜单&#xff0c;下方从左向右显示图片数据&#xff0c;支持放大查看图片和下载图片。整个页面使用了layui中的面包屑导航、弹出层、流…

强化学习2:Q-learning 算法

如果对强化学习没有了解&#xff0c;推荐先学习一下&#xff1a;强化学习基本原理 1 Q-Learning&#xff1a;简介 Q-Learning 是一种基于价值迭代的强化学习算法&#xff0c;用于解决马尔可夫决策过程&#xff08;MDP&#xff09;中的问题。在 Q-Learning 中&#xff0c;代理…