alterindonesia/service-pattern 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

alterindonesia/service-pattern

Composer 安装命令:

composer require alterindonesia/service-pattern

包简介

Core service eloquent

README 文档

README

This package provide a service pattern for Laravel application. This package use the default concept of MVC but with additional Service Layer. We not change default logic of Laravel feature like Request, Resource, etc. Here the layer of this package:

  1. Request comes from Route to Controller via FormRequest Laravel.
  2. In controller, there is validation based on FormRequest instance.
  3. After validation succeed, controller call Service Layer via Laravel Service Provider binding feature.
  4. Service Layer will process the business logic and return the result to controller.
  5. Controller will return the result to client via Resource.
  6. Resource will format the result to client.

Installation

composer require alterindonesia/service-pattern

Usage

  1. Update your Controller.php in app/Http/Controllers folder.
<?php

namespace App\Http\Controllers;

use Alterindonesia\ServicePattern\Controllers\BaseController;

abstract class Controller extends BaseController
{

}
  1. Your controller should be like:
<?php

namespace App\Http\Controllers;

use Alterindonesia\ServicePattern\Contracts\IServiceEloquent;
use App\Http\Requests\TestRequest;
use App\Http\Resources\TestResource;

class TestController extends Controller
{
    public function __construct(
        IServiceEloquent $service,
        string $request = TestRequest::class,
        string $response = TestResource::class
    ) {
        parent::__construct($service, $request, $response);
    }
}

you can change the request and response based on your need.

  1. Create your service in app/Services folder.
  2. Create Service via artisan command:
php artisan make:service TestService --model=Test
  1. Your service should be like:
<?php
namespace App\Services;
use Alterindonesia\ServicePattern\ServiceEloquents\BaseServiceEloquent;
use App\Models\Test;

class TestServiceEloquent extends BaseServiceEloquent
{
    public function __construct(
        Test $model
    ) {
        parent::__construct($model);
    }

}
  1. It will auto generate for CRUD operation, you can override the method based on your need.
  2. Your route will be like:
<?php
use Illuminate\Support\Facades\Route;

Route::get('/test','App\Http\Controllers\TestController@index');
Route::post('/test','App\Http\Controllers\TestController@store');
Route::get('/test/{id}','App\Http\Controllers\TestController@show');
Route::put('/test/{id}','App\Http\Controllers\TestController@update');
Route::delete('/test/{id}','App\Http\Controllers\TestController@destroy');
  1. Now, bind your service in AppServiceProvider.php
<?php

namespace App\Providers;

use Alterindonesia\ServicePattern\Contracts\IServiceEloquent;
use App\Http\Controllers\TestController;
use App\Services\TestServiceEloquent;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     */
    public function register(): void
    {
        //
    }

    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
        $this->app->when(TestController::class)
            ->needs(IServiceEloquent::class)
            ->give(TestServiceEloquent::class);

    }
}
  1. Done, now you can use this package in your Laravel application.

FAQ

  • why you not use RepositoryLayer?
    • personally, I think Repository Layer is not necessary because Laravel Eloquent is already powerful.
    • but, you can create your own Repository Layer in Service Layer if you want.

Next Feature

  • Add Service Layer for Query Builder
  • Add Yajra Datatables Service Layer
  • Add Service Layer for Import/Export
  • we think about it

alterindonesia/service-pattern 适用场景与选型建议

alterindonesia/service-pattern 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 551 次下载、GitHub Stars 达 0, 最近一次更新时间为 2024 年 03 月 21 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 alterindonesia/service-pattern 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 alterindonesia/service-pattern 我们能提供哪些服务?
定制开发 / 二次开发

基于 alterindonesia/service-pattern 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 551
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 9
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-03-21