propaysystems/laravel-base-repositories

带有常见查询接口的基础Eloquent仓储。


README

Propay Systems

带有常见查询接口的基础Eloquent仓储。

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

正在开发和测试中 - 我们将在v1稳定版本发布时添加正确的文档

这是我们使用的仓储模式的基类和辅助命令。在您自己的仓储类中,您必须扩展BaseRepository并实现自定义接口。在您的自定义接口中,您必须扩展BaseRepositoryInterface。这将为您提供一组常用查询和函数,您不必每次都重复。

class AddressRepository extends BaseRepository implements AddressRepositoryInterface
interface AddressRepositoryInterface extends BaseRepositoryInterface

要求

PHP 8.0+
Laravel 8+

版本兼容性

安装

您可以通过composer安装此包

composer require propaysystems/laravel-base-repositories

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="laravel-base-repositories-config"

配置

我们创建服务和服务仓储在laravel的app文件夹中,以利用laravel的自动加载功能。

服务

创建服务的默认路径将在App\Services文件夹中。如果文件夹不存在,它将被创建。

如果您想覆盖服务的默认路径,可以添加一个ENV变量并指定您的自定义路径。

BASE_SERVICE_PATH="App\MyServiceFolder"

将附加到默认创建的类的基名称,它将附加Service。因此,如果您创建一个User -s服务,创建的文件将是UserService

APPEND_SERVICE_NAME="Service"

仓储

创建仓储的默认路径将在App\Repositories文件夹中。如果文件夹不存在,它将被创建。

如果您想覆盖仓储的默认路径,可以添加一个ENV变量并指定您的自定义路径。

BASE_REPOSITORY_PATH="App\MyRepositoryFolder"

将附加到默认创建的类的基名称,它将附加Repository。因此,如果您创建一个User -r服务,创建的文件将是UserRepositoryUserRepositoryInterface

APPEND_REPOSITORY_NAME="Repository"

使用

创建服务

服务类是创建所有领域逻辑的地方。这使得在控制器、API、命令等中重用业务逻辑变得更容易。

  1. 创建服务类
php artisan base:create Users/User --service
or
php artisan base:create Users/User -s

运行此命令将在App\Services\文件夹中创建一个新的服务类。

规则是将每个服务拆分到自己的相关文件夹中,因此上述命令实际上将在

  • App\Services\Users\UserService.php

注入仓储

❕ 记得在服务的构造函数中依赖注入您想要使用的仓储,如下面的例子所示。

PHP 8.1 & above using constructor promotion
public function __construct(
    protected UserRepositoryInterface $userRepository,
)
{}

or 

PHP 8.0 & below
protected UserRepositoryInterface $userRepository;

public function __construct(
    UserRepositoryInterface $userRepository,
)
{
    $this->userRepository = $userRepository;
}

创建仓储

  1. 创建仓储类
php artisan base:create Users/User --repository --model=App/Models/Users/User
or
php artisan base:create Users/User -r --model=App/Models/Users/User

运行此命令将在App\Repositories\App\Repository\UserRepository\Interfaces文件夹中创建一个仓储类及其相关接口。指定模型将自动将相关模型链接到仓储。在这种情况下,User模型将被添加到仓储的构造函数中。

与服务类一样,规则是将每个仓储拆分到自己的相关文件夹中,因此上述命令将在

  • App\Repositories\Users\UserRepositories.php
  • App\Repositories\Users\Interfaces\UserRepositoriesInterface.php

这将尝试在laravel中创建和注册类和接口。

❕ 这些命令标志可以组合使用-s -r,以便在一条命令中创建相关的服务和仓储类。

第一个仓储

创建您的第一个仓库后,将在您的 App\Providers 文件夹中自动创建一个 RepositoryServiceProvider.php 文件。您需要将仓库提供者文件添加到 config/app.phpproviders 部分。这将告诉 Laravel 您正在添加仓库并将接口链接到它们,它们将被自动加载。

...

/*
 * Package Service Providers...
 */
App\Providers\RepositoryServiceProvider::class,

...        

测试

composer test

变更日志

有关最近变更的更多信息,请参阅 变更日志

贡献

有关详细信息,请参阅 贡献指南

安全漏洞

有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略

鸣谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件