leaveyou/console

一组无需 illuminate 框架开销的 console 相关组件

1.0.0 2017-04-04 08:11 UTC

This package is auto-updated.

Last update: 2024-09-17 23:35:25 UTC


README

Travis

一组用于解析命令行参数的 console 组件

特性

  • 复杂参数识别
Parameters without value         --verbose -v -vv -vvv
Optional parameters with value   --optional=1970 -o=1970 -o1970 -o"1970"
Mandatory parameters with value  --required=1970 -r=1970 -r1970 -r"1970" --required 1970 -r 1970 -r "1970"
  • 自动生成帮助页面
$ php test.php --help
Asked for help page...
  -o,  --optional    Some example of an optional parameter
  -v,  --verbose     Whether verbose
       --account     This parameter doesn't have a description
       --mandatory   Mandatory parameter description. This should have one and only one value.
       --help        Shows this help message
  • 依赖注入/容器就绪
  • 改进了原生 PHP 函数 getopt() 的不足
    • 如果定义为这样,则将 --version-v 视为相同参数。
    • 强制参数确实是强制性的
    • 可选参数不能有空值
    • 允许预先指定参数是单个字符串还是字符串列表
    • 可选参数的默认值
    • @SOON: 支持尾随任意数据:在 PHP 5 中 php x.php -abc [TRAILING] [DATA]

用法

<?php

/** class importing */
use Leaveyou\Console\Input;
use Leaveyou\Console\Parameter;
use Leaveyou\Console\ParameterSet;
use Leaveyou\Console\Tools\CommandLineParser;
use Leaveyou\Console\Tools\Help;
use Leaveyou\Console\Tools\ResultNormalizer;

/** composer autoloader */
require_once "../vendor/autoload.php";

$normalizer = new ResultNormalizer();
$cmdParser = new CommandLineParser($normalizer);
$helpGenerator = new Help();
$parameterSet = new ParameterSet();
$consoleInput = new Input($parameterSet, $cmdParser, $helpGenerator);

/** Define parameters */
$simpleParameter = new Parameter("simple");

$complexParameter = Parameter::create("complex")
    ->setType(Parameter::TYPE_MANDATORY)
    ->setDescription("Some example of a complex parameter")
    ->setShortName('c')
    ->setValueType(Parameter::VALUE_STRING);

/** Inject parameters */
$consoleInput->addParameter($simpleParameter);
$consoleInput->addParameter($complexParameter);

/** Read parameters */
$simple = $consoleInput->getValue('simple');
$complex = $consoleInput->getValue('complex');

然后只需运行 php test.php --simple="sure thing" --complex "yes" --complex "no"

Oops...

The "--complex" parameter can only be used once since the expected value must be a string.
  -c,  --complex     Some example of a complex parameter
       --simple      This parameter doesn't have a description
       --help        Shows this help message

待办事项

  • 制作列表
  • 单元测试
  • 将原生的 getopt() 调用替换为自定义实现
  • 使存储库更符合 S.O.L.I.D. 原则
  • 更好的帮助页面生成。当前的非常糟糕。
  • 为这个列表找到更多的事情
  • 生成命令摘要并显示可选参数和用法