php cli

2025-12-07 0 110

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

下载源码

通过命令行克隆项目:

git clone https://github.com/splitbrain/php-cli.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 php cli https://www.zuozi.net/31852.html

ionic datepicker
上一篇: ionic datepicker
WebApiMongoDB
下一篇: WebApiMongoDB
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务