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' );
考虑在不同的位置创建产品。您需要做的只是维护您的服务。