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 class
      make:controller   Create a new resource controller class
      make:event        Create a new event class
      make:listener     Create a new listener class
      make:middleware   Create a new middleware class
      make:model        Create a new model class
      make:repository   Create a new repository class
      make:service      Create a new service class
      make:subscribe    Create a new subscribe class
      make:transform    Create a new transform class
      make: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代码如下:

    <?php
    
    namespace 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代码如下:

    <?php
    
    namespace 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.mfbz.cn/a/567076.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

App Cleaner Uninstaller中文激活版:mac最强深度清理软件

App Cleaner & Uninstaller 是一款适用于 Mac 操作系统的软件应用程序&#xff0c;允许用户轻松卸载不需要的应用程序、删除剩余文件和文件夹以及管理启动项。该应用程序会分析与您要删除的应用程序关联的文件&#xff0c;并帮助识别其所有组件&#xff0c;以便您可以一次将…

中红医疗:纷享销客CRM系统如何助力​数字化“狂飙”

纷享销客深耕 CRM 多年&#xff0c;可以顺畅打通 CRM 和 ERP 系统客户资源池&#xff0c;将金蝶苍穹平台的物料、产品基础主数据作为档案同步到纷享销客&#xff0c;以便商务维护好产品及库存。 纷享销客通过成熟的集成方案提高系统耦合性&#xff0c;让销售实时获得新产品及营…

JsonPath实战

概述 JsonPath&#xff0c;GitHub是一种简单的方法来提取给定JSON文档的部分内容&#xff0c;提供类似正则表达式的语法来解析JSON文档。 特性 入门 引入如下Maven依赖&#xff1a; <dependency><groupId>com.jayway.jsonpath</groupId><artifactId&…

用Python将原始边列表转换为邻接矩阵

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在图论和网络分析中&#xff0c;图是一种非常重要的数据结构&#xff0c;它由节点&#xff…

驱动比例换向阀放大器

比例换向阀放大器技术是电液比例系统中关键的组成部分&#xff0c;它主要用于控制比例阀&#xff0c;实现对液压流量或压力的精确控制。 高精度控制&#xff1a;通过比例阀放大器&#xff0c;系统可以非常精确地调节液压流量或压力&#xff0c;这对于要求精密操作的机械系统来说…

DSP系统的设计过程与选型

DSP的设计步骤分几个阶段&#xff0c;应用系统的设计过程如图所示。 技术指标的确定 器件的选型原则 其他因素的考虑

学习c语音的自我感受

因为是自学&#xff0c;所以走过不少弯路。去年&#xff0c;受知乎“python性能弱”风潮的影响&#xff0c;学过go,rust。 在学习这些新语言的时候&#xff0c;由衷感受到&#xff0c;或是本身侧重方向的原因&#xff08;如go侧重服务器&#xff09;&#xff0c;或是语言太新不…

Php-WebView 现代跨平台 GUI分享

GitHub :php-webview 一个用于 C/C 的小型跨平台 Web 视图库&#xff0c;用于构建现代跨平台 GUI。 该项目的目标是为最广泛使用的平台创建一个通用的 HTML5 UI 抽象层。 它支持双向 JavaScript 绑定&#xff08;从 C/C 调用 JavaScript 和从 JavaScript 调用 C/C&#xff09;。…

蛋白质致病突变的计算方法(四)

3.1.5 域定位 (domain location) 残基在序列中的位置可分为N-terminal(1-30%)、中间(31-70%)和C-terminal(71-100%)。Singh等人报告称&#xff0c;TP53的中心和高度保守的DNA结合域包含一簇体细胞错义突变&#xff0c;包括R175、G245、R248和R273。这些突变形成与DNA的直接接触…

Docker 部署 WordPress 并完成建站

什么是 WordPress WordPress 是使用 PHP 语言开发的博客平台&#xff0c;用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站。也可以把 WordPress 当作一个内容管理系统&#xff08;CMS&#xff09;来使用。WordPress 是一款个人博客系统&#xff0c;并逐步演化…

DC-DC电源设计中电感选型详解

电感参数: DC-DC 电感选型步骤: 1, 根据 DC-DC 的输入输出特性计算所需的最小电感量。 (1)对于 Buck 型 DC-DC,计算公式如下 Lmin= 【Vout*(1-Vout/Vinmax)】/ (Fsw*Irpp ) 其中: Vinmax = maximum input voltage Vout = output voltage fsw = switching frequency…

第二届阿里巴巴大数据智能云上编程大赛亚军比赛攻略_北方的郎队

关联比赛: 第二届阿里巴巴大数据智能云上编程大赛-智联招聘人岗智能匹配 查看更多内容&#xff0c;欢迎访问天池技术圈官方地址&#xff1a;第二届阿里巴巴大数据智能云上编程大赛亚军比赛攻略_北方的郎队_天池技术圈-阿里云天池

Pytorch:张量的梯度计算

目录 一、自动微分简单介绍1、基本原理2、梯度计算过程3、示例&#xff1a;基于 PyTorch 的自动微分a.示例详解b.梯度计算过程c.可视化计算图 4、总结 二、为什么要计算损失&#xff0c;为何权重更新是对的&#xff1f;1、梯度下降数学原理2、梯度上升 三、在模型中使用自动微分…

Qt 菜单栏上手教程:QMenuBar QMenu QToolbar

引言 在Qt框架中&#xff0c;QMenuBar、QMenu、QToolbar和QAction都是用于构建应用程序界面中的用户交互元素。 QMenuBar 是什么&#xff1a;QMenuBar是一个用于创建横向菜单栏的类。在桌面应用程序中&#xff0c;它通常位于窗口的顶部。应用场景&#xff1a;当您需要一个包含…

CTF小工具

1 ciphey https://github.com/Ciphey/Ciphey Ciphey 是一个使用自然语言处理和人工智能的全自动解密/解码/破解工具。 简单地来讲&#xff0c;你只需要输入加密文本&#xff0c;它就能给你返回解密文本。就是这么牛逼。 有了Ciphey&#xff0c;你根本不需要知道你的密文是哪…

ros2_control【B站WMGIII教学学习记录】1

资源 https://www.bilibili.com/video/BV1ku411G7UR? 学习过程中存在bug&#xff0c;记录一下 1 Q:"package ‘joint_state_publisher_gui’ not found, searching: [/home A: sudo apt install ros-humble-joint-state-publisher2 https://fishros.org.cn/forum/to…

如何高效的压缩GIF图片?一键搞定GIF动图压缩 就是这么简单

一&#xff0c;引言 压缩GIF动图是一个常见的需求&#xff0c;无论是在社交媒体上分享动态表情&#xff0c;还是在网页设计中添加动态元素&#xff0c;GIF动图都扮演着重要的角色。然而&#xff0c;过大的GIF文件大小可能会导致加载速度慢&#xff0c;影响用户体验。因此&…

Github首页美化(updating)

Github首页美化 https://github.com/QInzhengk一、新建仓库二、美化Github首页主页访问量统计仓库状态统计常用语言占比统计社交链接 界面展示 https://github.com/QInzhengk 一、新建仓库 对Github首页进行美化&#xff0c;需要新建一个仓库名和自己 Github 用户名相同的仓库…

YOLC: You Only Look Clusters for Tiny Object Detection in Aerial Images

摘要 由于以下因素,从航拍图像中检测物体面临着重大挑战:1)航拍图像通常具有非常大的尺寸,通常有数百万甚至数亿像素,而计算资源有限。2)物体尺寸较小导致有效信息不足,无法进行有效检测。3)物体分布不均匀导致计算资源浪费。为了解决这些问题,我们提出YOLC(You Onl…

Python ADTK库:时间序列异常检测的利器

更多Python学习内容&#xff1a;ipengtao.com ADTK&#xff08;Anomaly Detection Toolkit&#xff09;是一个用于时间序列异常检测的Python库&#xff0c;提供了多种算法和工具&#xff0c;帮助用户识别和分析时间序列数据中的异常点和趋势变化。本文将详细介绍ADTK库的功能、…
最新文章