Skip to content

Commit 0f331ce

Browse files
committed
update readme
1 parent f61075c commit 0f331ce

File tree

1 file changed

+50
-36
lines changed

1 file changed

+50
-36
lines changed

README.md

Lines changed: 50 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,29 @@
66

77
简洁、功能全面的php命令行应用库。提供控制台参数解析, 命令运行,颜色风格输出, 用户信息交互, 特殊格式信息显示。
88

9-
> 无其他库依赖,可以方便的整合到任何已有项目中。
9+
> 使用方便简单。无其他库依赖,可以方便的整合到任何已有项目中。
1010
1111
- 命令行应用, 命令行的 `controller`, `command` 解析运行, 支持给命令设置别名
1212
- 功能全面的命令行的选项参数解析(命名参数,短选项,长选项 ...)
1313
- 命令行中功能强大的 `input`, `output` 管理、使用
14-
- 内置了Phar工具类,可以方便的将应用打包成 `phar` 文件(运行示例中 `php examples/app phar:pack`, 会将console库打包成一个`app.phar`)
15-
- 消息文本的多种颜色风格输出支持(`info`, `comment`, `success`, `danger`, `error` ... ...)
16-
- 丰富的特殊格式信息显示(`section`, `panel`, `padding`, `help-panel`, `table`, `title`, `list`, `multiList`, `progressBar`)
14+
- 命令方法注释自动解析为帮助信息(默认提取 `@usage` `@arguments` `@options` `@example` 等信息)
15+
- 支持输出多种颜色风格的消息文本(`info`, `comment`, `success`, `warning`, `danger`, `error` ... )
16+
- 常用的特殊格式信息显示(`section`, `panel`, `padding`, `helpPanel`, `table`, `tree`, `title`, `list`, `multiList`)
17+
- 丰富的动态信息显示(`pending/loading`, `pointing`, `spinner`, `counterTxt`, `progressTxt`, `progressBar`)
1718
- 常用的用户信息交互支持(`select`, `multiSelect`, `confirm`, `ask/question`, `askPassword/askHiddenInput`)
18-
- 命令方法注释自动解析为帮助信息(提取为参数 `arguments` 和 选项 `options` 等信息)
19-
- 支持类似 `symfony/console` 的预定义参数定义(按位置赋予参数值)
20-
- 输出是 windows,linux 兼容的,不支持颜色的环境会自动去除相关CODE
19+
- 支持类似 `symfony/console` 的预定义参数定义(按位置赋予参数值, 需要严格限制参数选项时推荐使用)
20+
- 输出是 `windows` , `linux` 兼容的,不支持颜色的环境会自动去除相关CODE
2121

2222
> 下面所有的特性,效果都是运行 `examples/` 中的示例代码 `php examples/app` 展示出来的。可以直接测试运行
2323
24+
**内置的有趣工具**
25+
26+
- 内置了Phar工具类,可以方便的将应用打包成`phar`文件(运行示例 `php examples/app phar:pack`,会将console库打包成一个`app.phar`)
27+
- `ArtFont::class` 支持 ansi 图案字体显示(运行 `php examples/app -V` 可以看到效果)
28+
- `Download::class` 内置的简单的文件下载工具类,带有进度条
29+
- `Terminal::class` 简单的Terminal屏幕、光标控制操作类
30+
- **TODO** 快速的为当前应用生成 `bash/zsh` 环境下的自动补全脚本
31+
2432
## [EN README](./README_en.md)
2533

2634
## 项目地址
@@ -77,6 +85,7 @@ $meta = [
7785
];
7886
$input = new Input;
7987
$output = new Output;
88+
// 通常无需传入 $input $output ,会自动创建
8089
$app = new Application($meta, $input, $output);
8190

8291
// add command routes
@@ -95,9 +104,7 @@ $app->run();
95104

96105
!['app-command-list'](docs/screenshots/app-command-list.png)
97106

98-
> `Independent Commands` 中的 demo 就是我们上面添加的命令
99-
100-
- `[alias: ...]` 命令最后的alias 表明了此命令拥有的别名。
107+
> `Alone Commands` 中的 demo 就是我们上面添加的命令
101108
102109
## 添加命令
103110

@@ -135,7 +142,7 @@ class TestCommand extends Command
135142
// 命令描述
136143
protected static $description = 'this is a test independent command';
137144

138-
// 注释中的 @usage @arguments @options 在使用 帮助命令时,会被解析并显示出来
145+
// 注释中的 @usage @arguments @options @example 在使用 帮助命令时,会被解析并显示出来
139146

140147
/**
141148
* @usage usage message
@@ -156,18 +163,9 @@ class TestCommand extends Command
156163
}
157164
```
158165

159-
- 注册命令
160-
161-
`$app->run()` 之前通过 `$app->command('test', TestCommand::class)` 注册独立命令。
162-
163-
```php
164-
$app->command(TestCommand::class);
165-
// OR 设置了命令名称,将会覆盖类里面设置的
166-
// $app->command('test1', TestCommand::class);
167-
```
168-
169166
### 命令组
170167

168+
当一些命令相关性较大时,写在同一个文件里更方便阅读和管理。
171169
通过继承 `Inhere\Console\Controller` 添加一组命令. 即是命令行的控制器
172170

173171
```php
@@ -178,7 +176,9 @@ use Inhere\Console\Controller;
178176
*/
179177
class HomeController extends Controller
180178
{
179+
// 命令组名称
181180
protected static $name = 'home';
181+
// 命令组描述
182182
protected static $description = 'default command controller. there are some command usage examples';
183183

184184
/**
@@ -211,34 +211,48 @@ class HomeController extends Controller
211211
}
212212
```
213213

214-
注册命令,在 `$app->run()` 之前通过 `$app->controller(HomeController::class)` 注册命令组。
214+
### 注册命令
215+
216+
`$app->run()` 之前
217+
218+
- 通过 `$app->command(TestCommand::class)` 注册独立命令。
219+
- 通过 `$app->controller(HomeController::class)` 注册命令组。
220+
221+
```php
222+
$app->command(TestCommand::class);
223+
// OR 设置了命令名称,将会覆盖类里面设置的
224+
// $app->command('test1', TestCommand::class);
225+
```
226+
227+
- 自动扫描注册
228+
229+
手动注册太麻烦! 可以配置命名空间和对应的路径来,将会自动扫描并注册命令。
215230

216-
**说明:**
231+
```php
232+
// 独立命令
233+
$app->registerCommands('App\\Console\\Commands', dirname(__DIR__) . '/Commands');
234+
// 命令组
235+
$app->registerGroups('App\\Console\\Controllers', dirname(__DIR__) . '/Controllers');
236+
```
217237

218-
命令组(eg `HomeController`) 中的命令(eg: `indexCommand`)上注释是可被解析的。
238+
**一些说明:**
219239

220-
- 支持的tag有 `@usage` `@arguments` `@options` `@example`
240+
命令上的注释是可被解析的
241+
242+
- 注释中的 `@usage` `@arguments` `@options` `@example` 在使用帮助命令时,会被解析并显示出来
243+
- 注释里面同样支持带颜色的文本输出 `eg: this is a command's description <info>message</info>`
244+
- 上诉tag注释里,支持变量替换(例如: `{command}` 会自动替换为当前输入的命令)
221245
- 当你使用 `php examples/app home -h` 时,可以查看到 `HomeController` 的所有命令描述注释信息
222246

223247
![group-command-list](docs/screenshots/group-command-list.png)
224248
- 当使用 `php examples/app home:test -h` 时,可以查看到关于 `HomeController::testCommand` 更详细的信息。包括描述注释文本、`@usage``@example`
225249

226250
![group-command-list](docs/screenshots/command-help.png)
227251

228-
> 小提示:注释里面同样支持带颜色的文本输出 `eg: this is a command's description <info>message</info>`
229-
252+
- 看到一些命令最后的 `[alias: ...]` 了吗,那是此命令拥有的别名. 即用别名也可以访问它,当一个命令太长时可以加别名方便使用
230253

231254
更多请查看 [examples](./examples) 中的示例代码和在目录下运行示例 `php examples/app` 来查看效果
232255

233-
### 自动扫描注册
234-
235-
可以配置命名空间和对应的路径来,自动扫描并注册命令。
236-
237-
```php
238-
$app->registerCommands('App\\Console\\Commands', get_path('app/Console/Commands'));
239-
$app->registerGroups('App\\Console\\Controllers', get_path('app/Console/Controllers'));
240-
```
241-
242256
## 输入
243257

244258
> 输入对象是 `Inhere\Console\IO\Input` 的实例

0 commit comments

Comments
 (0)