maamun7/serpository

通过 artisan 命令生成服务、仓库并注入,以支持可扩展的 Laravel 应用。

dev-master 2022-04-16 15:07 UTC

This package is auto-updated.

Last update: 2024-09-16 20:26:42 UTC


README

License Total Downloads

我们许多 Laravel 开发者喜欢在 Laravel 应用中使用 Service-Repository 模式来开发可扩展的应用程序。因此,手动创建这些 ServiceRepository 类既耗时又令人烦恼。

我多次遇到过这个问题,因此我开发了这个包,以便让我的任务更简单。我坚信我们许多人都有这个问题。因此,我决定将其公开。

此包提供了同时创建 service & repository 并通过 artisan 命令注入它们的便利。除此之外,人们还可以单独创建 servicerepository。更多详情请参考特性部分。

需求

此包需要 php 版本 >=7.4 和 Laravel 版本 >=8

安装

  1. 使用 composer 安装此包
composer require maamun7/serpository
  1. Serpository 服务提供者添加到 config/app.php 中的 providers 数组
Maamun7\Serpository\SerpositoryServiceProvider::class,

特性

  1. 创建服务
php artisan make:service User

如果 app 目录内没有 Services 目录,首先上述命令将创建该目录,然后在此创建目录中通过提供的名称和 Service 后缀创建一个 Service 类。例如:UserService

  1. 创建仓库
php artisan make:repo User  OR  php artisan make:repository User

如果 app 目录内没有 Repositories 目录,首先上述命令将创建该目录,然后在创建的 Repositories/Eloquents 目录中通过提供的名称和 Repository 后缀创建一个 Repository 类。例如:UserRepository

此外,仓库将有一个注入的 Interface,该接口位于仓库内的单独 Interfaces 目录中。

此外,此命令将在 app\Models 目录中通过提供的仓库名称搜索模型,并添加一些后缀(例如:假设提供的名称是 User,则将搜索 User、Users、UserModel 和 User_Model)。如果存在具有这些名称的模型,则将其注入到仓库中;否则,将注入一个具有提供的基础名称的模型。

  1. 使用相同名称创建服务和仓库
php artisan make:service User --r

标志 --r 允许创建具有相同基础名称的服务和仓库。此外,创建的仓库将自动注入到该服务中。

  1. 使用不同名称创建服务和仓库
php artisan make:service User --r --repo=MyUser

上述命令将创建一个名为 UserService 的服务和名为 MyUserRepository 的仓库。此仓库也将自动注入到该服务中。

它与控制器如何协同工作?

以下示例显示了它与控制器协同工作的方式。


namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Services\UserService;

class UserController extends Controller
{
    protected $userService;

    /**
     * @param UserService $userService
     */
    public function __construct(UserService $userService)
    {
        $this->userService = $userService;
    }

    public function index()
    {
        $users = $this->userService->getAll();
    }
}

许可

Serpository 是一个免费软件,在 MIT 许可证的条款下分发。