Laravel中的存储库有哪些优势?它似乎是从应用程序的业务逻辑中抽象出模型层.虽然它看起来真的只会使整个请求生命周期变得更加复杂,但yield 微乎其微.

Can someone shed light on the advantage of Laravel repositories?


编辑

在使用存储库一段时间之后,我将添加以下内容:

  • Repositories enforce single responsibility
  • 存储库应该只返回一个实体集合
  • 虽然这些概念与依赖性是分离的,但它们是sibling
  • 实际存储实施的存储抽象(例如MySQL)
  • 更容易的测试

推荐答案

像在提供的教程中一样,存储库不是Laravel概念所必需的.更确切地说,它们是一种国际奥委会注入的形式,在拉雷维尔身上是可能的.任何可能类似地被注入的对象并不意味着它是一个存储库.泰勒·奥特韦尔(Taylor Otwell)的一个很好的例子见视频,它碰巧也使用了一个"存储库":http://vimeo.com/53029232.

在本例中,存储库抽象了传递给控制器的数据来自何处.只要传递的数据实现了指定的接口,控制器就可以"幸福地"利用接口的已定义方法,而不必担心数据最初来自哪里.这允许在不中断控制器的情况下切换初始数据源.您可以从文件、数据库、外部API、模拟对象或某个任意数组中提取数据.基本上,控制器不需要收集存储库表示的数据.它只能接受和使用.

Laravel相关问答推荐

AJAX响应中未定义的全名

在postgres/mysqlс中,我可以定义基于json字段的唯一索引吗?

将 ID 传递给资源控制器进行编辑

如何在 Laravel 9 中获取带分页的订单列表?

未定义防护 [api] 的授权驱动程序 [api]

如何在生产中的 laravel 应用程序中获取标头请求值?

Laravel 5文件夹 struct 中的文件保存在哪里?

在 laravel 的集合中找到?例子

laravel url 验证变音符号

Laravel 4,如何测试复选框是否被选中?

Laravel 5.x 中 onUpdate / onDelete 的可用操作

WhereHas Laravel 中的关系计数条件是什么

Laravel Eloquent - 加入表时防止覆盖值

嘲笑没有匹配的关闭处理程序

Laravel:在另一个控制器中加载方法而不更改 url

Elastic search全文与mysql全文?

Laravel 单元测试依赖注入

如何让 Laravel 将 View 的Content-Type标头返回为application/javascript?

以编程方式而不是从 CLI 运行 Laravel 5 seeder

Laravel 验证用户名不允许有空格