fresns/cmd-word-manager

命令词管理器(用于Laravel)帮助插件(功能模块)之间轻松通信。

v1.5.3 2024-03-25 11:37 UTC

README

PHP Laravel License

关于

命令词管理器(用于Laravel)帮助插件(功能模块)之间轻松通信。

赞助商

Fresns 是一个 Apache-2.0 许可的开源项目,其持续发展完全得益于这些优秀的赞助商的支持。如果您想加入他们,请考虑赞助 Fresns 开发

安装

通过Composer安装,运行以下命令

composer require fresns/cmd-word-manager

使用

创建命令词服务提供者

// Generate cmd word providers: /app/Providers/CmdWordServiceProvider.php
php artisan make:cmd-word-provider
// Generate a cmd word provider for the specified name or directory
php artisan make:cmd-word-provider [Name] [--path Name]

php artisan make:cmd-word-provider FooBar --path Demo
// path directory: /demo/FooBar/Providers/CmdWordServiceProvider.php

注册服务提供者

/config/app.php 文件的 providers 键值中,添加生成的命令词服务提供者。

  • App\Providers\CmdWordServiceProvider::class
  • Demo/FooBar/Providers/CmdWordServiceProvider::class
<?php

return [
    <...>
    'providers' => [
        <...>
        App\Providers\CmdWordServiceProvider::class,
    ],
    <...>
];

映射命令词

在命令词提供者文件 /app/Providers/CmdWordServiceProvider.php 的属性中,在 $cmdWordsMap 中添加命令词映射配置。

<?php

namespace App\Providers;

use Plugins\BarBaz\Models\TestModel;
use Plugins\BarBaz\Services\AWordService;
use Plugins\BarBaz\Services\BWordService;

class CmdWordServiceProvider extends ServiceProvider implements \Fresns\CmdWordManager\Contracts\CmdWordProviderContract
{
    <...>
    protected $fsKeyName = 'FooBar';

    protected $cmdWordsMap = [
        ['word' => 'test', 'provider' => [AWordService::class, 'handleTest']],
        ['word' => 'staticTest', 'provider' => [BWordService::class, 'handleStaticTest']],
        ['word' => 'modelTest', 'provider' => [TestModel::class, 'handleModelTest']],
    ];
    <...>
}

使用命令词

请求输入

// $parameter list = (parameter array);
$wordBody = [
    "email" => "Mail address",
    "title" => "Mail title",
    "content" => "Mail content"
];

// \facades::plugin('plugin name')->cmd word($parameter list): Define the contract for the return object
\FresnsCmdWord::plugin('FresnsEmail')->sendEmail($wordBody);

另一种编写方式

\FresnsCmdWord::plugin('FresnsEmail')->sendEmail([
    "email" => "Mail address",
    "title" => "Mail title",
    "content" => "Mail content"
]);

结果输出

// Success
{
    "code": 0,
    "message": "ok",
    "data": {
        //Command word output data
    }
}

// Failure
{
    "code": 21001,
    "message": "Plugin does not exist",
    "data": {
        //Command word output data
    }
}

结果处理($fresnsResp)

如果您使用命令词返回结果,可以使用 Fresns Response 来帮助您快速处理请求的返回。

示例

$fresnsResp = \FresnsCmdWord::plugin('FresnsEmail')->sendEmail($wordBody);

处理异常情况

if ($fresnsResp->isErrorResponse()) {
    return $fresnsResp->getErrorResponse();
}

处理正常情况

$fresnsResp->getOrigin(); // Obtaining raw data(code+message+data)

$fresnsResp->getCode(); // Get code only
$fresnsResp->getMessage(); // Get only the message
$fresnsResp->getData(); // Get only the full amount of data
$fresnsResp->getData('user.nickname'); // Get only the parameters specified in data, for example: data.user.nickname

$fresnsResp->isSuccessResponse(); // Determine if the request is true
$fresnsResp->isErrorResponse(); // Determine if the request is false

$fresnsResp->getErrorResponse(); // Internal use returns raw data, API calls return JSON.

贡献

您可以通过以下三种方式之一进行贡献

  1. 使用问题跟踪器提交错误报告。
  2. 问题跟踪器上回答问题或修复错误。
  3. 贡献新功能或更新wiki。

代码贡献流程并不十分正式。您只需要确保您遵循 PSR-0、PSR-1 和 PSR-2 编码规范。任何新的代码贡献都必须附带适用的情况下的单元测试。

许可

Fresns 命令词管理器是开源软件,在 Apache-2.0 许可下授权。