propaysystems / laravel-base-repositories
带有常见查询接口的基础Eloquent仓储。
Requires
- php: ^8.0|^8.1|^8.2|^8.3
- illuminate/contracts: ^11.0
- spatie/laravel-package-tools: ^1.9.2
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^8.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^9.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.2
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2024-09-05 12:37:25 UTC
README
带有常见查询接口的基础Eloquent仓储。
正在开发和测试中 - 我们将在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
服务,创建的文件将是UserRepository
和UserRepositoryInterface
APPEND_REPOSITORY_NAME="Repository"
使用
创建服务
服务类是创建所有领域逻辑的地方。这使得在控制器、API、命令等中重用业务逻辑变得更容易。
- 创建服务类
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; }
创建仓储
- 创建仓储类
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.php
的 providers
部分。这将告诉 Laravel 您正在添加仓库并将接口链接到它们,它们将被自动加载。
... /* * Package Service Providers... */ App\Providers\RepositoryServiceProvider::class, ...
测试
composer test
变更日志
有关最近变更的更多信息,请参阅 变更日志。
贡献
有关详细信息,请参阅 贡献指南。
安全漏洞
有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略。
鸣谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。