PHP-CLI
PHP-CLI是一个简单的库,可帮助创建漂亮的命令行脚本。
它照顾
- 选项解析
- 帮助页面生成
- 自动宽度调整
- 彩色输出
- 可选的PSR3兼容性
它是轻巧的,没有第三方依赖性。注意:这仅适用于非互动脚本。它没有阅读线或类似的支持。
安装
使用作曲家:
php composer.phar require splitbrain/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()添加一个sub命令
- 实现
main($options)方法,并在此处执行您的业务逻辑$options->getOpts允许您访问设置选项$options->getArgs()在删除选项后返回剩余的参数$options->getCmd()返回用户使用的sub命令
- 实例化您的课程并在其上拨打
run()
在示例目录中可以找到更多示例。请参阅API文档以获取更多信息。
例外
默认情况下,CLI类注册了一个异常处理程序,并将将异常的消息打印给最终用户,并使用非零退出代码退出程序。您可以通过将false传递给构造函数来禁用此行为并捕获所有例外。
您可以使用所提供的splitbrain\\phpcli\\Exception来自行发出主码中的任何问题。当时,异常代码将用作退出代码。
stackTraces将在日志级别debug中打印。
彩色输出
彩色输出通过Colors类处理。它试图检测是否可用,然后使用终端颜色。您始终可以通过将脚本传递给--no-colors输出来抑制彩色输出。禁用颜色也将禁用表情符号前缀。
您可以使用Consinence Methods success() (green), info() (cyan), error() (红色)或fatal() (红色)打印简单的彩色日志消息。后者还将使用非零退出代码退出程序。
对于更复杂的着色,您可以在脚本中通过$this->colors访问颜色类。 wrap()方法可能是您要使用的。
表格格式允许着色完整列。使用该机制将颜色数组作为第三参数将其传递给其format()方法。请注意,您无法在第二个参数中传递彩色文本(文本长度计算和包装将失败,打破文本)。
表格格式
TableFormatter类允许您在多列中对齐文本。它试图自行找出可用的终端宽度。可以通过设置COLUMNS环境变量来覆盖它。
通过format()方法使用格式,该方法至少期望两个数组:第一个定义列宽度,第二个包含文本填充到列中。在每个列之间打印一个边框(默认情况下是一个空间)。
有关示例用法,请参见example/table.php 。
可以以三种形式给出列宽:
- 通过提供整数来固定字符的宽度(例如
15) - 通过探明整数和百分比的预期(例如
25%) - 带有星号的单个流体“ REST”列(例如
*)
当混合固定宽度和百分比宽度时,百分比是指所有固定列分配后剩余空间。
边界空间自动计算。建议始终具有一些相对(百分比)或流体柱,以调整不同的端子宽度。
表格格式使用-h或--help调用您的脚本时,可用于自动帮助屏幕。
PSR-3记录
CLI类是完全兼容的Logger(打印到STDOUT和STDERR的彩色日志数据)。当您从CLI调用后端代码(希望Logger实例在运行时产生任何明智的状态输出)时,这很有用。
如果您需要传递实现Psr\\Log\\LoggerInterface的类,则可以通过从实现此接口而不是splitbrain\\phpcli\\CLI两个提供的类之一来继承来实现。
- 如果您使用的是
splitbrain\\phpcli\\PSR3CLI的版本2(PHP <8.0) - 如果您使用的是PSR3的版本3(php> =
splitbrain\\phpcli\\PSR3CLIv3)
然后可以将结果对象作为logger实例传递。两者之间的区别是调整后的方法签名(仅带有适当的类型提示)。使用这些类时,请确保您已安装了建议的psr/log作曲家软件包。
注意:如果您的后端代码调用PSR-3 Logger,但实际上并未键入接口(又称loggeraware)的检查,则还可以通过splitbrain\\phpcli\\CLI的实例。
日志级别
您可以使用--loglevel参数调整CLI工具的详细性。受支持的loglevels是PSR-3 loglevels和我们自己的success水平:
- 调试
- 信息
- 注意
- 成功(在PSR-3中未定义)
- 警告
- 错误
- 批判的
- 警报
- 紧急情况
所有日志级别的便利方法都可以使用。 PSR-3中所述的占位符插值也可用。 warning级别STDOUT消息将打印到以下所有STDERR 。
可以通过覆盖$logdefault成员来设置脚本的默认日志级别。
有关示例,请参见example/logging.php 。
