Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Laravel 5的存储库模式_Php_Design Patterns_Laravel 5_Repository Pattern - Fatal编程技术网

Php 使用Laravel 5的存储库模式

Php 使用Laravel 5的存储库模式,php,design-patterns,laravel-5,repository-pattern,Php,Design Patterns,Laravel 5,Repository Pattern,我在app/Repositories中创建了两个Repositories类,如SeriesRepository,CommentRepository等。我这样做的想法是抽象数据库调用,因此,如果我愿意,我可以使用elount或查询生成器,甚至原始SQL,而不必在代码中的数千个位置更改查询 因为我将以开源的形式发布这个项目,所以我决定为每个存储库添加一个接口。这样,任何可能使用该项目的人都可以创建自己的特定存储库版本,并且只需实现该接口。这是不是太过分了?这是不是太过工程化了?我应该跳过接口吗?作为

我在app/Repositories中创建了两个Repositories类,如SeriesRepositoryCommentRepository等。我这样做的想法是抽象数据库调用,因此,如果我愿意,我可以使用elount或查询生成器,甚至原始SQL,而不必在代码中的数千个位置更改查询


因为我将以开源的形式发布这个项目,所以我决定为每个存储库添加一个接口。这样,任何可能使用该项目的人都可以创建自己的特定存储库版本,并且只需实现该接口。这是不是太过分了?这是不是太过工程化了?我应该跳过接口吗?

作为最佳实践,建议为接口编写代码,特别是针对可扩展项目。您可能有兴趣查看以下Laravel Repository Package,了解已完成的大部分工作,并以您需要的方式进行抽象:

它是一个简单、直观、智能的活动存储库实现,具有极为灵活的Laravel细粒度缓存系统,用于抽象数据层,使应用程序的维护更加灵活。简而言之,下图显示了它的工作原理:


作为最佳实践,建议为接口编写代码,特别是针对可扩展项目。您可能有兴趣查看以下Laravel Repository Package,了解已完成的大部分工作,并以您需要的方式进行抽象:

它是一个简单、直观、智能的活动存储库实现,具有极为灵活的Laravel细粒度缓存系统,用于抽象数据层,使应用程序的维护更加灵活。简而言之,下图显示了它的工作原理:


这句话很好地解释了这一点。非常感谢你的提示和很棒的套餐。我一定会用它。这个评论很好地解释了它。非常感谢你的提示和很棒的套餐。我一定会用的。