jjulien/php-cli-helper

基于 CLI 的 PHP 程序辅助工具

1.0.0 2017-11-03 15:33 UTC

This package is not auto-updated.

Last update: 2024-09-22 13:40:35 UTC


README

Build Status

PHP CLI Helper

PHP CLI Helper 创建用于简化 PHP 命令行工具的开发。它目前支持命令行选项解析和验证。

使用概要

主要类是 CLIHelper\Helper。您需要告诉这个类所有要支持选项及其行为。告诉辅助类解析选项后,它会验证用户是否违反了您定义的选项行为规则。如果发现违规,用户将收到一条帮助信息,显示选项应该如何使用以及违反了哪个选项规则。如果没有发现违规,则使用辅助对象检索选项值并确定用户指定的选项。

使用示例

代码

#!/usr/bin/php
<?php

require(dirname(__FILE__) . '/../vendor/autoload.php');

use CLIHelper\Helper;

$helper = new Helper();
$helper->newOption()
    ->withName("file-in")
    ->withHelp("Input file to be processed")
    ->withShort("-i")
    ->withLong("--file-in")
    ->required()
    ->build();
$helper->newOption()
    ->withName("file-out")
    ->withHelp("Output file for processing result")
    ->withShort("-o")
    ->withLong("--file-out")
    ->required()
    ->build();
$helper->newOption()
    ->withName("verbose")
    ->boolean()
    ->withHelp("Display verbose output")
    ->withShort("v")
    ->withLong("verbose")
    ->build();

$helper->parse();

# Reading options
if ($helper->getValue('verbose')) {
    print 'Reading in file "' . $helper->getValue('file-in') . '" and saving output to "' . $helper->getValue('file-out') . '"' . "\n";
}

调用

$./sample-script.php

Option -i or --file-in is required
Option -o or --file-out is required

Usage: sample-script.php <-i VALUE | --file-in VALUE> <-o VALUE | --file-out VALUE> [-h | --help] [-v | --verbose]
         -h, --help : Displays this message
      -i, --file-in : Input file to be processed
     -o, --file-out : Output file for processing result
      -v, --verbose : Display verbose output

添加选项

有两种方式可以添加选项。您可以使用 CLIHelper\OptionBuilder 类,它可以通过在 CLIHelper\Helper 上使用便利方法 ->newOption() 获取。您也可以创建自己的 CLIHelper\Option 对象并调用 ->addOption($option)CLIHelper\Helper 上。

选项可以是 Option::TYPE_BOOLEANOption::TYPE_VALUE 类型,默认是 Option::TYPE_VALUEOption::TYPE_BOOLEAN 选项是开/关选项,例如常见的 "verbose" 选项。它没有值,它要么在命令行上提供,要么不提供。 Option::TYPE_VALUE 选项读取命令行后面的值。一个例子是 --file-in filename,其中 --file-in 必须提供值。

使用 ->addOption($option) 的示例

#!/usr/bin/php
<?php

require(dirname(__FILE__) . '/../vendor/autoload.php');

use CLIHelper\Helper;
use CLIHelper\Option;

$helper = new Helper();

$option = new Option();
$option->setName("verbose");
$option->setShortOpt("-v");
$option->setLongOpt("--verbose");
$option->setType(Option::TYPE_BOOLEAN);
$option->setHelp("Display verbose output");
$helper->addOption($option);

$helper->parse();

使用 ->newOption() 的示例

#!/usr/bin/php
<?php

require(dirname(__FILE__) . '/../vendor/autoload.php');

use CLIHelper\Helper;

$helper = new Helper();
$helper->newOption()
    ->withName("verbose")
    ->boolean()
    ->withHelp("Display verbose output")
    ->withShort("v")
    ->withLong("verbose")
    ->build();

$helper->parse();