laravel 5.5 仓库模式 文件之间接口与实现操作
仓库模式
最直接的意思就是:
Eloquent数据(数据库)查询 方便快捷,简单明了。自己怎么写的,就怎么去调用,完全ok~
本质意思:
仓库就像是业务内部的数据对象集合,负责协调业务和数据映射层之间的关系,客户端对象只需要构造一个清晰的查询请求, 然后提交给仓库就行了。
仓库里的对象可以通过客户端的请求进行增删改查,客户端可以在某个场景下,通过一个简单的对象集合或者仓库中映射的代码实现合适的操作。
仓库模式把数据访问逻辑和业务逻辑中实体访问分开了,数据访问逻辑和业务逻辑只能通过接口来进行数据操作。
简单来说, 仓库模式就是一种存放数据访问逻辑的容器,它向业务层屏蔽了数据访问逻辑的细节, 也可以这样理解, 在不清楚数据层设计结构的情况下, 我们也能按照业务逻辑来访问数据层。
这样做(数据访问层和业务逻辑分离) 有很多好处:
- 数据访问逻辑集中管理, 方便维护代码
- 业务和数据访问逻辑可以分开测试
- 减少重复代码
- 减少编程中的错误
↓↓↓下面就是怎么去设计这个仓库模式了↓↓↓ (☄⊙ω⊙)☄
先在 Providers(服务商)文件夹下创建一个自己定义的文件比如:RepositoryServiceProvider.php (使用artisan创建比较方便 php artisan make:provider RepositoryServiceProvider)

然后要将这个RepositoryServiceProvider.php 的类注册一下才可以的 -> 在Config目录下App.php中

在App目录下创建一个自定义的文件夹(最好和Providers 里面创建的文件名字一样。方便记忆)

在Repository文件目录下创建相应的文件夹(接口类和接口实现类)

在两个文件夹下面创建相应的文件(先定义接口 -> Interface文件夹下)TestInterface.php

Repositories 文件目录下 TestRepositories.php

写完这两个文件的之后 接下来就要去第一个创建的文件中的register方法添加一行代码了 $this->app->bind (RepositoryServiceProvider.php)
这块部分叫做 “绑定接口”
也就是说ServiceProvider是Laravel IOC容器实现动态换接口实现的地方,所以在这里绑定一下,在使用的时候,不直接使用接口实现,而是用ioc容器解析接口,它会帮你自动找到对应好的实现。这就意味着,以后需要更换实现,可以在这里更换

接下来就是调用刚才自己写的接口了 在 Controllers 自己创建的控制器下调用~

然后 就完成了 仓库模式 的使用方法 So Easy~~~
laravel 5.5 仓库模式 文件之间接口与实现操作的更多相关文章
- Python基础笔记系列十一:标准输入输出、文件读写和指针等操作
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 标准输入输出一.输入 在sublime中这个时候需要安装SublimeRE ...
- Laravel与Repository Pattern(仓库模式)
为什么要学习Repository Pattern(仓库模式) Repository 模式主要思想是建立一个数据操作代理层,把controller里的数据操作剥离出来,这样做有几个好处: 把数据处理逻辑 ...
- linux – tty,ttyS,pts,ptmx,vcs,vcsa设备文件之间的区别?(/dev/tty等)
linux – tty,ttyS,pts,ptmx,vcs,vcsa设备文件之间的区别? 终端有字符终端和图形终端两种模式.在linux的图形环境下,我们可以通过鼠标点击来完成所有的管理任务,这是图形 ...
- 【ASP.NET Core】选项模式的相关接口
在 .NET 中,配置与选项模式其实有联系的(这些功能现在不仅限于 ASP.NET Core,而是作为平台扩展来提供,在其他.NET 项目中都能用).配置一般从多个来源(上一篇水文中的例子,记得否?) ...
- C#对象与XMl文件之间的相互转换
C#提供三种序列化方式,分别为: 1.是使用BinaryFormatter进行串行化: 2.使用SoapFormatter进行串行化: 3.使用XmlSerializer进行串行化.其中对于Binar ...
- Linux文件描述符与打开文件之间的区别(转载)
转载请说明出处:http://blog.csdn.net/cywosp/article/details/38965239 1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为: ...
- Linux中的文件描述符与打开文件之间的关系
Linux中的文件描述符与打开文件之间的关系 导读 内核(kernel)利用文件描述符(file descriptor)来访问文件.文件描述符是非负整数.打开现存文件或新建文件时,内核会返回一个文件描 ...
- Linux中的文件描述符与打开文件之间的关系------------每天进步一点点系列
http://blog.csdn.net/cywosp/article/details/38965239 1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件.目录文件. ...
- .h头文件、 .lib库文件、 .dll动态链接库文件之间的关系
转自.h头文件. .lib库文件. .dll动态链接库文件之间的关系 h头文件作用:声明函数接口 dll动态链接库作用:含有函数的可执行代码 lib库有两种: (1)静态链接库(Static Liba ...
随机推荐
- destoon开发笔记-调取资讯标题图
今天刚申请博客园的博客,申请速度挺快的.之前我的文章都是发在自己搭建的博客网站,但是是香港服务器,不想续费了,所以就关闭了.之前的数据也没有了,挺可惜了.不过既然加入博客园的大家庭,我就在这每天记录工 ...
- update mantis_bug_table
update mantis_bug_table set mantis_bug_table.original_due_date=mantis_bug_table.due_date ,) ,);
- Spring——JDBC——数据库
1.Spring 的数据访问哲学 数据访问的功能放到一个或者多个专注于此项任务的组件.这样的组件通常称为数据访问对象(data access object)DAO或者Repository. 为了避免应 ...
- Java Scanner语法
1.导入: import java.util.Scanner; 2.创建对象 Scanner scan = new Scanner(System.in);//一般变量名为scan或者in 最后关闭,s ...
- v2.3.0
v2.3.1 大版本2,小版本3,fixbug 1
- Table to List<object> C#
我们有 myobj 是这样的 public class MyObj { public string Name { get; set; } public int ID { get; set; } } 再 ...
- 洛谷 P1807 最长路_NOI导刊2010提高(07)题解
相当与一个拓扑排序的模板题吧 蒟蒻的辛酸史 题目大意:给你一个有向无环图,让你求出1到n的最长路,如果没有路径,就输出-1 思路:一开始以为是一个很裸的拓扑排序 就不看题目,直接打了一遍拓扑排序 然后 ...
- 洛谷 P1965 转圈游戏
洛谷 P1965 转圈游戏 传送门 思路 每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,--,依此类推,第n − m号位置上的小伙伴走到第 0 号 ...
- centos7 计划任务简介
概述 就像再windows上有计划任务一样,centos7 自然也有计划任务,而且设置更为灵活,好用.再centos7 上可以利用crontab 来执行计划任务, 依赖与 crond 的系统服务,这个 ...
- Android Studio 之 ROM【3】,LiveData+ViewModel+AsyncTask+Repository+RecyclerView
教程地址:https://www.bilibili.com/video/av65180549 源码地址:https://github.com/longway777/Android-2019-Tutor ...