fresns / cmd-word-manager
命令词管理器(用于Laravel)帮助插件(功能模块)之间轻松通信。
v1.5.3
2024-03-25 11:37 UTC
Requires
- php: ^8.0.2
- fresns/dto: ^1.3
- laravel/framework: ^9.0|^10.0|^11.0
README
关于
命令词管理器(用于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.
贡献
您可以通过以下三种方式之一进行贡献
代码贡献流程并不十分正式。您只需要确保您遵循 PSR-0、PSR-1 和 PSR-2 编码规范。任何新的代码贡献都必须附带适用的情况下的单元测试。
许可
Fresns 命令词管理器是开源软件,在 Apache-2.0 许可下授权。