Laravel 5 的存储库模式
Repository pattern with Laravel 5
我在 app/Repositories 中创建了几个存储库 类,例如 SeriesRepository、CommentRepository 等。我这样做的想法是抽象数据库调用,所以我可以使用 Eloquent 或查询生成器,甚至可以使用原始 SQL 如果我愿意,而不必更改查询代码中的数千个地方。
由于我将把这个项目作为开源项目发布,所以我决定为每个存储库添加一个接口。这样任何可能使用该项目的人都可以创建他们自己的特定存储库版本并只实现接口。这是矫枉过正吗?这只是过度设计吗?我应该跳过接口吗?
作为最佳实践,建议为接口编写代码,尤其是针对可扩展项目。您可能有兴趣检查以下 Laravel 存储库包 以了解大部分已完成的工作并按照您需要的方式进行抽象:https://github.com/rinvex/repository
这是一个简单、直观、智能的 Active Repository 实现,具有针对 Laravel 的极其灵活和细粒度的缓存系统,用于抽象数据层,使应用程序更易于维护。下图简要说明了它的工作原理:
我在 app/Repositories 中创建了几个存储库 类,例如 SeriesRepository、CommentRepository 等。我这样做的想法是抽象数据库调用,所以我可以使用 Eloquent 或查询生成器,甚至可以使用原始 SQL 如果我愿意,而不必更改查询代码中的数千个地方。
由于我将把这个项目作为开源项目发布,所以我决定为每个存储库添加一个接口。这样任何可能使用该项目的人都可以创建他们自己的特定存储库版本并只实现接口。这是矫枉过正吗?这只是过度设计吗?我应该跳过接口吗?
作为最佳实践,建议为接口编写代码,尤其是针对可扩展项目。您可能有兴趣检查以下 Laravel 存储库包 以了解大部分已完成的工作并按照您需要的方式进行抽象:https://github.com/rinvex/repository
这是一个简单、直观、智能的 Active Repository 实现,具有针对 Laravel 的极其灵活和细粒度的缓存系统,用于抽象数据层,使应用程序更易于维护。下图简要说明了它的工作原理: