# Command Word Manager
**Repository Path**: fresns/cmd-word-manager
## Basic Information
- **Project Name**: Command Word Manager
- **Description**: Command word manager helps plugins(individual functional modules) to communicate with each other easily.
- **Primary Language**: PHP
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://pm.fresns.org/zh-hans/command-word/
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2022-03-04
- **Last Updated**: 2025-03-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Fresns, cmd-word
## README

## About
Command word manager(in laravel) helps plugins(individual functional modules) to communicate with each other easily.
- Guide: [https://pm.fresns.org/command-word/](https://pm.fresns.org/command-word/)
## Install
To install through Composer, by run the following command:
```bash
composer require fresns/cmd-word-manager
```
## Using
### Create cmd word service providers
```php
// Generate cmd word providers: /app/Providers/CmdWordServiceProvider.php
php artisan make:cmd-word-provider
```
```php
// 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
```
### Registered service providers
In the `providers` key value of the `/config/app.php` file, add the generated command word service provider.
- `App\Providers\CmdWordServiceProvider::class`
- or
- `Demo/FooBar/Providers/CmdWordServiceProvider::class`
```php
'providers' => [
<...>
App\Providers\CmdWordServiceProvider::class,
],
<...>
];
```
### Mapping command word
In the properties of the command word provider file `/app/Providers/CmdWordServiceProvider.php`, in `$cmdWordsMap`, add the command word mapping config.
```php
protected $fsKeyName = 'FooBar';
protected $cmdWordsMap = [
['word' => 'test', 'provider' => [AWordService::class, 'handleTest']],
['word' => 'staticTest', 'provider' => [BWordService::class, 'handleStaticTest']],
['word' => 'modelTest', 'provider' => [TestModel::class, 'handleModelTest']],
];
<...>
}
```
### Using cmd words
#### Request input
| Name | Description |
| --- | --- |
| `\FresnsCmdWord` | Cmd Word Facades |
| `FresnsEmail` | Requesting Object `fskey`, Leaving blank or filling in `Fresns` means that the main program handles the request |
| `sendEmail` | Command word |
| `$wordBody` | Parameter list of command word parameters |
```php
// $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);
```
**Another way to write**
```php
\FresnsCmdWord::plugin('FresnsEmail')->sendEmail([
"email" => "Mail address",
"title" => "Mail title",
"content" => "Mail content"
]);
```
#### Result output
| Name | Description |
| --- | --- |
| code | Status code |
| message | Status information |
| data | Output data |
```json
// Success
{
"code": 0,
"message": "ok",
"data": {
//Command word output data
}
}
// Failure
{
"code": 21001,
"message": "Plugin does not exist",
"data": {
//Command word output data
}
}
```
| Code | Message |
| --- | --- |
| 21000 | Unconfigured plugin |
| 21001 | Plugin does not exist |
| 21002 | Command word does not exist |
| 21003 | Command word unknown error |
| 21004 | Command word not responding |
| 21005 | Command word request parameter error |
| 21006 | Command word execution request error |
| 21007 | Command word response result is incorrect |
| 21008 | Data anomalies, queries not available or data duplication |
| 21009 | Execution anomalies, missing files or logging errors |
| 21010 | Command word function is disabled |
| 21011 | Incorrect command word configuration |
#### Result processing($fresnsResp)
If you are standardized to use command word return results, you can use Fresns Response to help you quickly handle the return of the request.
**Example:**
```php
$fresnsResp = \FresnsCmdWord::plugin('FresnsEmail')->sendEmail($wordBody);
```
**Handling abnormal situations**
```php
if ($fresnsResp->isErrorResponse()) {
return $fresnsResp->getErrorResponse();
}
```
**Handling normal situations**
```php
$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.
```
## Contributing
You can contribute in one of three ways:
1. File bug reports using the [issue tracker](https://github.com/fresns/command-word/issues).
2. Answer questions or fix bugs on the [issue tracker](https://github.com/fresns/command-word/issues).
3. Contribute new features or update the wiki.
*The code contribution process is not very formal. You just need to make sure that you follow the PSR-0, PSR-1, and PSR-2 coding guidelines. Any new code contributions must be accompanied by unit tests where applicable.*
## License
Fresns Command Word Manager is open-sourced software licensed under the [Apache-2.0 license](https://github.com/fresns/cmd-word-manager/blob/main/LICENSE).