jake142/laravel-service

一个将Laravel项目拆分为更小服务的包

3.0.9 2024-08-26 10:25 UTC

README

一个将Laravel拆分为更小服务的包。本包的主要目标是

  1. 可读性,代码被拆分为服务
  2. 可扩展性,按需运行服务
  3. 快速开发,分摊开发者的工作

安装

简单地运行

composer require jake142/laravel-service

使用方法

首先运行

php artisan laravel-service:make

这将启动一个设置向导,您可以在其中定义

  1. 服务的名称
  2. 服务的版本(例如,V1)
  3. 如果您想要一个示例控制器(推荐)
  4. 如果您想要一个示例作业(推荐)
  5. 如果您想要一个示例测试(推荐)

服务已创建(已添加到您的composer.json文件中作为仓库),但尚未启用。

启用服务

要启用服务,请运行

php artisan laravel-service:enable laravel-service/$version-$service (例如,laravel-service/v1-sampleservice)

这将启用服务,意味着

  1. Composer将运行require命令以引用您的服务
  2. 测试将被添加到phpunit.xml中,因此可以使用phpunit命令运行

禁用服务

要禁用服务,请运行

php artisan laravel-service:disable laravel-service/$version-$service (例如,laravel-service/v1-sampleservice)

这将禁用服务,意味着

  1. Composer将运行remove命令以从您的服务中删除
  2. 测试将被从phpunit.xml中删除

列出服务和其状态

php artisan laravel-service:list

通用队列和作业

要调用通用队列

(new GenericQueue('Services\\V1\\Test\\Jobs\\ExampleJob', ['param'=>'test'], $queue = null))->dispatch();

要运行通用作业

<?php namespace Services\V1\Test\Jobs;

use Jake142\Service\Queue\Jobs\Generic as GenericJob;

/**
 * An example job
 */
class ExampleJob extends GenericJob
{

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle($payload)
    {
       	try
       	{
        	//Your code goes here...
            Log::info($payload['param']);
       	}
       	catch(\Exception $e)
    	{
            throw $e;
        }
    }
}

配置

您可以使用vendor:publish发布每个服务的配置文件,或者您可以发布laravel-service配置文件。如果您使用laravel-service配置文件,您可以通过以下方式访问配置值

config('laravel-service.<version>.<service>.<config_file>.<value>');

生成OpenAPI文档

php artisan laravel-service:generate-docs {service/all} {constants?}

文档将在存储文件夹中生成:storage/app/laravel-service/v1-sampleservice/docs/swagger.json。

如果您使用all而不是服务,所有laravel-service都将用于文档生成,并将文件放置在storage/app/laravel-service/docs/swagger.json中

常量是您存储常量的配置路径。例如,swagger.constants将读取配置文件swagger和参数常量中的所有常量。

感谢swagger-php

使用readme.com?需要使用swagger功能allOf?那么您可以使用

artisan laravel-service:generate-docs {service/all} {constants?} --workaround-readme

版本说明

版本 3.0.6 -> 版本 3.0.9 更新了swagger依赖。

版本 3.0.5 删除了composer install中的dev-master。

版本 3.0.4 对通用队列进行了修改。

版本 3.0.3 为readme.com提供了特殊支持以支持swagger功能。

版本 3.0.2 启用了所有服务以生成开放API文档。

版本 3.0.1 为开放API文档生成添加了常量。

版本 3.0.0 现在有了开放API 3.0!请参阅下面的更多内容!

版本 0.2.9 修复了GenericQueue中的错误,当作业处理时作业未从队列中删除。

版本 0.2.8 修复了0.2.7中的错误,其中 $this->findComposer() 在Laravel 5.8及以上版本中是一个数组,在Laravel 5.7及以下版本中是一个字符串。

版本 0.2.7 覆盖了 Composer 类中已弃用的 getProcess 函数,以支持 Laravel 5.8 及以上版本。

版本 0.2.6 添加了 dev-master 参数到启用服务时运行的 composer require 命令。

版本 0.2.5 修复了损坏的更新包命令。现在您应该能够运行

php artisan laravel-service:update-package

如果您曾使用过版本 0.2.2 -> 0.2.4,您将不得不手动修复您的 composer 文件和 phpunit 文件。抱歉!

Note: If you have dependencies between your services (eg. common, core services etc) you should manually disable all service before running the laravel-service:update-package command.

版本 0.2.3 将 service:make 命令重命名为 laravel-service:make。

由于 Composer 2.x 更严格的命名规则,此包的服务具有新的命名。我已创建 artisan upgrade 命令来为您执行更改。该命令将禁用所有服务,您在运行命令后必须手动启用它们。

php artisan laravel-service:update-package

我还将所有命令的前缀更新为 laravel-service(而不是之前的 service)

版本 0.2.1 启用了服务配置的自动更新。更多信息见下文。

版本 0.2.0 包含通用作业和队列。这是必需的,以便一个服务可以在不知道另一个服务作业中的代码的情况下将数据推送到队列。

版本 0.1.X 是该包的完整重写。版本 0.1.X 现在将每个服务作为 composer 包创建,并使用 composer 将其添加到您的项目中。它已在 Laravel 版本 5.6 中进行测试。不再支持旧版本。

请注意

laravel-service 将添加

"minimum-stability": "dev",
"prefer-stable": true

到您的 composer.json 文件。