adityadarma/laravel-service-repository

轻松创建模式服务和存储库

1.1.8 2024-05-18 15:54 UTC

This package is auto-updated.

Last update: 2024-09-18 16:42:07 UTC


README

要求

  • 最低 PHP ^8.0
  • Laravel ^9.x

安装

您可以通过 composer 安装最新版本的包

composer require adityadarma/laravel-service-repository

安装核心基础服务的底层服务部分

php artisan service-repository:install

用法

*服务

创建服务

php artisan make:service nameService

用于控制器

protected NameService $nameService;

public function __construct(
    NameService $nameService
)
{
    $this->nameService = $nameService;
}

public function data()
{
    $this->nameService->functionName()->getData();
}

public function json(Request $request)
{
    $this->nameService->functionName()->toJson();
}

public function withResource(Request $request)
{
    $this->nameService->functionName()->toJsonFromResource(ClassResource::class);
}

使用服务 & 异常

所有异常都必须有对 CustomException 类的处理

public function nameMethod()
{
    try {
         .........
         if (false) {
            throw new CustomException('Error exception');
         }
        ..........
        // Call toJsonFromResource at controller
        return $this->setData($data)
            ->setMessage('Message data')
            ->setCode(200);
        // OR
        // Call toJson at controller
        return $this->setData($data)
            ->setResource(ClassResource::class)
            ->setMessage('Message data')
            ->setCode(200);
    } catch (Exception $e) {
        return $this->exceptionResponse($e);
    }
}

*存储库

创建存储库

php artisan make:repository nameRepository --model
  • --model 将使用构造模型创建存储库

您可以在 "GeneralFunctionRepository" 特质中使用通用函数。

用于服务

protected NameRepository $nameRepository;

public function __construct(
    NameRepository $nameRepository
)
{
    $this->nameRepository = $nameRepository;
}

public function data()
{
    $this->nameRepository->functionName();
}

*请求

php artisan make:request nameRequest --single
  • --single 将所有方法转换为单文件请求(存储、更新、删除)

自定义命令请求,有 failedValidation 以保持一致的 API 响应。我还添加了一个参数,这样我们就可以在一个 FormRequest 文件中进行验证。将消息功能添加到自定义响应属性消息中

*模型

php artisan make:model name --trait --repository
  • --trait 将特质文件用于模型,如访问器、修改器、关系和作用域
  • --repository 将创建具有构造模型的存储库文件

自定义命令模型,我们添加了两个参数类型。您可以将它们分开为特质(访问器、修改器、关系和作用域)并添加文件存储库。

许可证

此包根据 MIT 许可证授权。享受!