命令行参数解析

#!/usr/bin/env php
<?php

//实例化
$cmd = zxf\Tools\Command::instance();

// 获取所有参数值
$all = $cmd->all();

// 解析选项 port
$cmd->option('port', function ($val) {
    // $val port选项传入的值
    echo 'Option port handler=>'.$val;
});

// 解析参数 test
$cmd->args('test', function ($bool){
    // $bool 是否解析到 test true|false
    if($bool){
        // 传入了 test
    }else{
        //未传入 test
    }
});

// 获取所有Opts的值
$opts = $cmd->getOptVal();

// 获取 port 的值 ,没有则返回null
$port = $cmd->getOptVal('port');

// 获取所有Args的值
$args = $cmd->getArgVal();

// 获取 是否传入 test 的 ,返回true|false
$test = $cmd->getArgVal('test');

// 调用 demo:  php 你的脚本文件 --port 3307 -c 100 -hlocal test -g
// 传入参数说明:
//    --opts参数名称 加 空格 加 opts参数值 例如:--port 3307 表示 port 的值为 3307       ; 返回到 opts 中
//    -opts参数名称 加 空格 加 opts参数值 例如:-c 100 表示 c 的值为 100                 ; 返回到 opts 中
//    -opts参数简称「单字母」 不加空格 接opts参数值 例如:-hlocal 表示 h 的值为 local      ; 返回到 opts 中
//    -opts参数简称「单字母」 例如:-g 表示 传入了参数 g                                 ; 返回到 opts 中
//    参数名称 例如:test 表示 传入了参数 test                                         ; 返回到 args 中


// 扩展方法
// 输入
$name = $cmd->input('请输入您的名字');
$choice = $cmd->choice('请选择一项:',['a'=>'选项A','b'=>'选项B','c'=>'选项C']);

// 输出
$cmd->info('打印一个info');
$cmd->error("error");
$cmd->warning("warning");
$cmd->blink("闪烁文字"); // 闪烁文字

自定义颜色样式
$cmd->printLine("红色文字", CliOutput::ANSI_RED); // 红色文字
$cmd->printLine("绿色加粗文字", CliOutput::ANSI_GREEN, CliOutput::ANSI_BOLD); // 绿色加粗文字
$cmd->printLine("蓝色闪烁文字", CliOutput::ANSI_BLUE, CliOutput::ANSI_BLINK); // 蓝色闪烁文字
$cmd->printLine("黄色反色文字", CliOutput::ANSI_YELLOW, CliOutput::ANSI_REVERSE); // 黄色反色文字
$cmd->printLine("青色下划线文字", CliOutput::ANSI_CYAN, CliOutput::ANSI_UNDERLINE); // 青色下划线文字
$cmd->printLine("带背景色的文字", CliOutput::ANSI_BG_RED, CliOutput::ANSI_BOLD); // 带背景色的文字

打印进度条
$total = 100;
for ($i = 0; $i <= $total; $i++) {
  usleep(100000); // 模拟耗时操作
  $cmd->printProgress($i, $total);
}

打印表格
$data = [
  ['姓名', '年龄', '性别'],
  ['张三11', 25, '男'],
  ['李四', 30, '女'],
  ['王五', 28, '男'],
];
$cmd->printTable($data);