guillermoandrae / php-repository
一个实现Repository模式的PHP库。
3.0.2
2021-12-28 18:28 UTC
Requires
- php: ^8.0
- guillermoandrae/php-collection: ^2.0
- icanboogie/inflector: ^2.0
Requires (Dev)
README
我使用了一个简单的Repository模式实现。经常,我在项目间复制粘贴相同的代码已经超过了我的意愿;最近我意识到了这一点,这就是这个项目存在的原因。
安装
这样做,然后放松
composer require guillermoandrae/php-repository
使用方法
在做出任何疯狂的事情之前,阅读关于Repository模式的资料。如果你阅读过之后仍然决定继续前进:继续阅读。
类命名
你的类应该按照其数据类型命名。例如,如果你在处理小部件,你的存储库应该命名为WidgetsRepository
,你的模型应该命名为WidgetModel
。请注意,存储库名称中的数据类型是复数,而模型名称是单数。
定义命名空间
默认情况下,RepositoryFactory
类会在App\Repositories
命名空间中查找存储库。如果你不打算使用该命名空间,你需要告诉工厂你的存储库在哪里。使用RepositoryFactory::setNamespace()
来做到这一点,如下所示
RepositoryFactory::setNamespace('MyStuff\Repositories');
创建存储库
利用存储库功能就像编写以下内容一样简单
namespace App\Repositories; // again, use whatever you like use Guillermoandrae\Repositories\AbstractRepository; class WidgetsRepository extends AbstractRepository { public function create(array $data): ModelInterface { // add your object creation code here } }
你需要实现继承自AbstractRepository
类的一些方法。查看RepositoryInterface
和AbstractRepository
类以获取最新的方法列表。
创建模型
创建模型很简单
namespace App\Repositories; use Guillermoandrae\Models\AbstractModel; final class WidgetModel extends AbstractModel // the "final" is optional { // add your constructor and getters }
我通常构建不可变模型,但如何使用它们完全取决于你。
测试
运行以下命令以确保你不会破坏代码覆盖率百分比
composer check-coverage
运行以下命令以确保你的代码格式正确
composer check-style
运行以下命令以轻松调用上述两个命令
composer test