kesmenenver/servicelayer

此包的最新版本(dev-master)没有可用的许可证信息。

服务层是一种设计模式,可以帮助您在应用程序需要使用不同的前端时,对您的领域逻辑进行抽象。

dev-master 2018-06-05 11:59 UTC

This package is not auto-updated.

Last update: 2024-10-02 09:53:52 UTC


README

Laravel服务层是一个Laravel 5的包,用于在服务层中抽象业务逻辑。这使得应用程序更容易维护。

安装

从您的终端运行以下命令

composer require kesmenenver/servicelayer

或者将此添加到您的composer.json文件中的require部分

 "kesmenenver/servicelayer": "dev-master"

然后运行composer update

用法

想象一个应用程序,用户可以创建产品。您不能在控制器中完成这个过程,因为控制器必须作为所有层的粘合代码,所以您需要一个服务层来处理。这个包可以轻松实现。

首先

php artisan make:service CreateProduct

此命令将在app/Services文件夹中创建一个接口和一个类。您必须在app/services/CreateProduct中实现make()方法。我们将在控制器中稍后使用接口进行依赖注入。

app/services/CreateProduct看起来像这样。

<?php

namespace App\Services;
use App\Services\Contracts\CreateProductServiceInterface;

class CreateProductService implements CreateProductServiceInterface
{
   public function make(array $request)
       {
            // TODO: Implement make() method.
           // put all the logic in this class
       }
}

我们需要实现make()方法。所有逻辑都必须在您的make()方法中。通过实现make()方法,您告诉这个服务做什么。

现在,实现make()方法

<?php

namespace App\Services;
use App\Services\Contracts\CreateProductServiceInterface;

class CreateProductService implements CreateProductServiceInterface
{
   public function make(array $request)
       {
           $product = \App\Product::create([
               'name' => $request['name'],
               'amount' => $request['amount'],
               'quantity' => $request['quantity']
           ]);
           return $product;
       }
}

最后,在控制器中使用此服务

public function store(CreateProductRequest $request, CreateProductServiceInterface $createProductService)
{
    $product = $createProductService->make($request->toArray());
    return response()->json($product);
}

我们在控制器中使用接口进行依赖注入。Laravel需要知道这个接口在哪里实现。只需将以下代码片段添加到/app/Providers/AppServiceProvider.php类中的register()方法中。

 $this->app->bind(
            'App\Services\Contracts\CreateProductServiceInterface',
            'App\Services\CreateProductService'
        );

考虑在不同的位置创建产品。您需要做的只是维护您的服务。