guillermoandrae/php-repository

一个实现Repository模式的PHP库。

3.0.2 2021-12-28 18:28 UTC

This package is auto-updated.

Last update: 2024-09-29 00:38:41 UTC


README

Travis Scrutinizer Scrutinizer Coverage Your Mom Approves

我使用了一个简单的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类的一些方法。查看RepositoryInterfaceAbstractRepository类以获取最新的方法列表。

创建模型

创建模型很简单

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