manchenkoff / laravel-repositories
为您的 Laravel 应用程序实现仓库模式
v0.0.6
2024-03-16 09:33 UTC
Requires
- php: ^8.2
- illuminate/console: ^11.0
- illuminate/contracts: ^11.0
- illuminate/database: ^11.0
- illuminate/support: ^11.0
Requires (Dev)
- driftingly/rector-laravel: ^0.26.0
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1
- nunomaduro/larastan: ^2.9
- orchestra/testbench: ^9.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10
- rector/rector: ^0.19
README
该软件包提供了基于 artisan
命令的基本仓库模式实现,用于生成类。
功能
Repository
类具有基本方法,如all
、find
、create
、update
、delete
- 泛型类型注释以通过
PHPStan
检查 - Artisan
make:repository
命令用于生成具有模型和接口的仓库类
安装
要安装此软件包,您首先需要安装 Composer,然后在终端中运行
composer require manchenkoff/laravel-repositories
或在 composer.json
中添加此行
"manchenkoff/laravel-repositories": "*"
然后运行 composer update
软件包应自动在您的应用程序中注册其服务提供者,但您也可以在 config/app.php
中手动完成
'providers' => ServiceProvider::defaultProviders() ->merge([ // Package Service Providers \Manchenkoff\Laravel\Repositories\ServiceProvider::class, // Application Service Providers // ... ]) ->toArray(),
使用方法
首先,您需要为您的仓库创建一个模型类。您可以手动创建或使用 artisan
命令
php artisan make:model Post
然后您可以创建一个用于您的模型的仓库类
# repository name - PostRepository # model name - Post php artisan make:repository PostRepository Post
此命令将在 app/Repositories
目录中创建一个仓库类,并在 app/Contracts/Repositories
中创建一个 PostRepositoryInterface
合约类。
现在您可以在服务中使用现有方法或扩展自定义功能
<?php namespace App\Services; use Illuminate\Database\Eloquent\Collection; use App\Contracts\Repositories\PostRepositoryInterface; use App\Contracts\Services\PostServiceInterface; final class PostService implements PostServiceInterface { private readonly PostRepositoryInterface $repository; public function __construct(PostRepositoryInterface $repository) { $this->repository = $repository; } public function getAllPosts(): Collection { return $this->repository->all(); } }
实现
所有仓库方法都使用受保护的 query()
方法来获取 Eloquent.Builder
实例。您可以在您的仓库类中重写此方法以添加自定义逻辑,例如,当您始终需要加载某些关系或应用自定义排序时。
protected function query(): Builder { return parent::query()->with('comments')->orderBy('created_at', 'desc'); }
以下是可用方法的列表及其简要描述
您可能还需要根据需要调整类模板。您可以通过发布软件包视图来完成此操作
php artisan vendor:publish --provider="Manchenkoff\Laravel\Repositories\ServiceProvider"
开发
此软件包是完全开源的,因此欢迎任何贡献!
将此存储库克隆到您的本地计算机,安装依赖关系并运行测试
git clone https://github.com/manchenkoff/laravel-repositories cd laravel-repositories composer install composer test
有一些有用的 composer
脚本