Laravel存储库

And*_*gan 19 php laravel laravel-4

Laravel中存储库的优点是什么?它似乎是从应用程序的业务逻辑中抽象出Model层.虽然它实际上似乎只是使整个请求生命周期变得更加复杂,但收益微乎其微.

有人能否了解Laravel存储库的优势?


编辑

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

  • 存储库强制执行单一职责
  • 存储库应该只返回一个实体集合
  • 虽然与依赖注射分开但概念是兄弟
  • 实际存储实现的存储抽象(例如MySQL)
  • 更容易测试

kfr*_*end 32

与提供的教程一样,存储库不是Laravel概念所必需的.相反,它们是LaoC的一种IoC注入形式.任何可能类似注入的对象并不意味着它是一个存储库.请参阅视频,了解Taylor Otwell的一个很好的例子,它恰好也使用了"存储库":http://vimeo.com/53029232.

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