sudiptochoudhury / php-cli
PHP 的简单命令行脚本,具有选项解析和彩色输出。无依赖项
Requires
- php: >=7.1.0
Requires (Dev)
- phpunit/phpunit: 4.5.*
Suggests
- psr/log: Allows you to make the CLI available as PSR-3 logger
README
PHP-CLI 是一个简单的库,可以帮助创建看起来不错的命令行脚本。
fork 自 splitbrain/php-cli
它负责
- 选项解析
- 帮助页面生成
- 自动宽度调整
- 彩色输出
- 可选的 PSR3 兼容性
它轻量且没有 第三方依赖项。
安装
使用 composer
php composer.phar require sudiptochoudhury/php-cli
使用方法和示例
最小示例
#!/usr/bin/php <?php require __DIR__ . '/../vendor/autoload.php'; use splitbrain\phpcli\CLI; use splitbrain\phpcli\Options; class Minimal extends CLI { // register options and arguments protected function setup(Options $options) { $options->setHelp('A very minimal example that does nothing but print a version'); $options->registerOption('version', 'print version', 'v'); } // implement your code protected function main(Options $options) { if ($options->getOpt('version')) { $this->info('1.0.0'); } else { echo $options->help(); } } } // execute it $cli = new Minimal(); $cli->run();
基本用法很简单
- 创建一个类并
extend splitbrain\phpcli\CLI
- 实现
setup($options)
方法并注册选项、参数、命令并设置帮助文本$options->setHelp()
添加一个通用描述$options->registerOption()
添加一个选项$options->registerArgument()
添加一个参数$options->registerCommand()
添加一个子命令
- 实现一个
main($options)
方法并在这里处理业务逻辑$options->getOpts
允许你访问设置的选项$options->getArgs()
返回移除选项后的剩余参数$options->getCmd()
返回用户使用的子命令
- 实例化你的类并调用它上的
run()
异常处理
默认情况下,CLI 类会注册一个异常处理器,并将异常的消息打印给最终用户,并以非零退出码退出程序。您可以通过将 false 传递给构造函数来禁用此行为并自行捕获所有异常。
您可以使用提供的 splitbrain\phpcli\Exception
在您的主代码中自行报告任何问题。异常的代码将用作退出码。
在日志级别 debug
上打印堆栈跟踪。
彩色输出
彩色输出通过 Colors
类处理。它尝试检测是否存在颜色终端,并且只有在存在颜色终端的情况下才会使用终端颜色。您可以通过将 --no-colors
传递给您的脚本始终抑制彩色输出。禁用颜色也会禁用表情符号前缀。
您可以使用便利方法 success()
(绿色)、info()
(青色)、error()
(红色)或 fatal()
(红色)来打印简单的彩色日志消息。后者也将以非零退出码退出程序。
对于更复杂的着色,您可以通过在脚本中使用 $this->colors
访问颜色类。您可能想要使用 wrap()
方法。
表格格式化器允许着色整个列。要使用该机制,请将其 format()
方法的第三个参数传递为一个颜色数组。请注意,您不能在第二个参数中传递彩色文本(文本长度计算和包装将失败,破坏您的文本)。
表格格式化器
TableFormatter
类允许您在多个列中对文本进行对齐。它会自行尝试确定可用的终端宽度。它可以通过设置 COLUMNS
环境变量来重写。
格式化器通过 format()
方法使用,该方法至少期望两个数组:第一个定义列宽,第二个包含要填充到列中的文本。在每列之间打印边框(默认为单个空格)。
请参阅 example/table.php
以获取示例用法。
列宽可以以三种形式给出
- 提供一个整数以提供字符的固定宽度(例如
15
) - 通过提供整数和百分号(例如
25%
)来表示百分比。 - 一个单独的“剩余”列,用星号标记(例如
*
)。
当混合固定宽度和百分比宽度时,百分比指的是所有固定列分配完毕后的剩余空间。
边框的空间会自动计算。建议始终有一些相对(百分比)或流体列来调整不同终端宽度。
表格格式化器用于当使用 -h
或 --help
调用脚本时可以访问的自动帮助屏幕。
PSR-3 记录
CLI 类是一个完全符合 PSR-3 的记录器(将彩色日志数据打印到 STDOUT 和 STDERR)。当你从 CLI 调用期望 Logger 实例产生任何合理状态输出的后端代码时,这非常有用。
要使用此功能,只需从 splitbrain\phpcli\PSR3CLI
继承,而不是 splitbrain\phpcli\CLI
,然后将 $this
作为记录器实例传递。确保已安装建议的 psr/log
composer 包。
您可以使用 --loglevel
参数调整 CLI 工具的详细程度。支持的日志级别是 PSR-3 日志级别和我们的 success
级别。
- 调试
- 信息
- 注意
- 成功
- 警告
- 错误
- 严重
- 警报
- 紧急
所有日志级别的便捷方法都可用。也支持 PSR-3 中描述的占位符插值。从 warning
级别开始的消息打印到 STDERR
,所有以下级别都打印到 STDOUT
。
可以通过覆盖 $logdefault
成员来设置脚本默认的日志级别。
参见 example/logging.php
以获取示例。