Skip to content

about console command

Inhere edited this page May 29, 2022 · 6 revisions

控制台命令说明

通常我们在Linux终端执行一个命令都包含以下部分: 命令名,选项,参数

简单的如 ls, grep 等,是个独立的小命令,可以有选项参数

CMD [--OPTIONS] [ARGUMENTS]

复杂一些的可以有子命令,且子命令可以有多级,如 git, composer

CMD SUB [--OPTIONS] [ARGUMENTS]

php-console

php-console 包即是一个可以方便构建复杂且多级的控制台应用库。

如果你只想构建一个简单的命令可以使用我的 php-toolkit/pflag 库, php-console 是基于它构建复杂应用的。

执行命令始终遵循如下格式:

ENTRY CMD [--OPTIONS] [ARGUMENTS]
# 多级子命令
ENTRY CMD [--OPTIONS] SUB [--OPTIONS] [ARGUMENTS]
  • ENTRY 是应用入口文件 eg: ./bin/app.php
    • 加了 shebang #!/usr/bin/env php 后可以省略 php 后缀
  • CMD 是注册到console应用的命令名称,是必须的
    • 就像web应用的路由path一样,通过它确认要执行哪个命令
  • [--OPTIONS] 是前面命令的选项设置,以 - 开头,它是可选的根据命令的设置而不同
  • [ARGUMENTS] 则是解析完选项之后留下的参数,同样是可选的
    • 参数通常是根据位置获取值的,例如 [tom john] -> Arg(0)=tom
    • 在console里可以给参数命名,内部会自动按位置绑定到对应名称

命令选项和参数

命令行选项

  • 选项以 - 或者 -- 开头的,且首字符必须是字母
  • -- 开头的为长选项. eg: --long --long value
  • - 开头的为短选项 -s -a value
  • 支持定义数组选项
    • eg: --tag php --tag go 将会得到 $tag = [php, go]

命令行参数

  • 不能满足选项的都认作参数
  • 支持绑定命名参数
  • 支持定义数组参数

独立命令和命令组

console 包支持使用 controller 形式简单快速的组织一组命令。也支持使用 command 形式构建每个独立命令。

使用console 包可以快速方便的编写命令

  • 可以直接使用注释tag,方便快速的定义命令的选项和参数
  • 也可以通过对象化的方式配置一个命令
  • 自动生成漂亮的帮助面板信息
  • 支持设置选项或参数的值类型,会自动格式化为对应类型

编写独立命令

如何在使用console包独立命令类,请查看 创建命令

TIP: 创建好命令后需要注册到Application, 请继续看 注册命令 章节

编写命令组

更多使用和编写说明请查看 创建命令组

TIP: 创建好命令后需要注册到Application, 请继续看 注册命令 章节