PHP-CLI是一个简单的库,可帮助创建漂亮的命令行脚本。
它照顾
它是轻巧的,没有第三方依赖性。注意:这仅适用于非互动脚本。它没有阅读线或类似的支持。
使用作曲家:
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 splitbrainphpcliCLIsetup($options)方法和注册选项,参数,命令和设置帮助文本$options->setHelp()添加了一般描述$options->registerOption()添加一个选项$options->registerArgument()添加一个参数$options->registerCommand()添加一个sub命令main($options)方法,并在此处执行您的业务逻辑$options->getOpts允许您访问设置选项$options->getArgs()在删除选项后返回剩余的参数$options->getCmd()返回用户使用的sub命令run()在示例目录中可以找到更多示例。请参阅API文档以获取更多信息。
默认情况下,CLI类注册了一个异常处理程序,并将将异常的消息打印给最终用户,并使用非零退出代码退出程序。您可以通过将false传递给构造函数来禁用此行为并捕获所有例外。
您可以使用所提供的splitbrainphpcliException来自行发出主码中的任何问题。当时,异常代码将用作退出代码。
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% )* )当混合固定宽度和百分比宽度时,百分比是指所有固定列分配后剩余空间。
边界空间自动计算。建议始终具有一些相对(百分比)或流体柱,以调整不同的端子宽度。
表格格式使用-h或--help调用您的脚本时,可用于自动帮助屏幕。
CLI类是完全兼容的Logger(打印到STDOUT和STDERR的彩色日志数据)。当您从CLI调用后端代码(希望Logger实例在运行时产生任何明智的状态输出)时,这很有用。
如果您需要传递实现PsrLogLoggerInterface的类,则可以通过从实现此接口而不是splitbrainphpcliCLI两个提供的类之一来继承来实现。
splitbrainphpcliPSR3CLI的版本2(PHP <8.0)splitbrainphpcliPSR3CLIv3 )然后可以将结果对象作为logger实例传递。两者之间的区别是调整后的方法签名(仅带有适当的类型提示)。使用这些类时,请确保您已安装了建议的psr/log作曲家软件包。
注意:如果您的后端代码调用PSR-3 Logger,但实际上并未键入接口(又称loggeraware)的检查,则还可以通过splitbrainphpcliCLI的实例。
您可以使用--loglevel参数调整CLI工具的详细性。受支持的loglevels是PSR-3 loglevels和我们自己的success水平:

所有日志级别的便利方法都可以使用。 PSR-3中所述的占位符插值也可用。 warning级别STDOUT消息将打印到以下所有STDERR 。
可以通过覆盖$logdefault成员来设置脚本的默认日志级别。
有关示例,请参见example/logging.php 。