alxmsl/cli

支持 php-cli 脚本选项的简单库

v2.0.1 2015-07-09 10:10 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:58:02 UTC


README

这是一个用于支持 php-cli 脚本选项的简单类集

优点

  1. 轻量级 - 仅使用两个类来处理命令选项
  2. 事件帮助提高代码的灵活性
  3. 自加载。您只需要包含一个文件
  4. 独立的命名空间有助于在不同的项目和框架上使用 Cli

可能性

在调用 php-cli 脚本时,您可以设置短或长选项名,相同的行可以是相等的

php script.php -a               # short name of option apply
php script.php --apply

您可以使用布尔值或字符串作为选项值

php script.php --apply          # option 'apply' has boolean value
php script.php --change=all -a  # option 'change' has string value 'all', and option 'aplly' has boolean value true
php script.php --change=all     # option 'aplly' has boolean value false. It's not set

如果您使用包含空格的字符串值,请对其进行引用

php script.php --change="all the world"

您可以创建必需的选项或不创建

php script.php -s Test          # option 'script' is required

...如果您在调用 'script.php' 时没有 's' 选项,您将看到

php script.php
PHP Fatal error:  Uncaught exception 'Cli\RequiredOptionException' in /root/CommandPosix.php:79

对于每个选项,您都可以添加回调函数(请参阅使用示例)。回调函数可以使用第一个参数作为选项名称,第二个参数作为值

$Command->appendParameter($Option, function($name, $value) {
    echo 'option \'' . $name . '\' value is \'' . $value . '\'' . "\n";
});

您将看到

php script.php --script=noscript
option 'script' value is 'noscript'

使用示例

// Firstly include base class
include('../source/Cli.php');

use \Cli\CommandPosix,
    \Cli\Option;

// Just create command line option instances
$OptionHelp = new Option('help', 'h', 'show help screen option');

// Create command instance
$Command = new CommandPosix();

// Append created option for help to command
$Command->appendHelpParameter('show help screen option');

// Append one required option. And...
$Command->appendParameter(new Option('option', 'o', 'some option', Option::TYPE_BOOLEAN, true));

// ...just parse the command
$Command->parse();

如果当必需的选项值未设置时需要异常,请尝试

$Command->parse(true);

您将看到类似以下的内容

alxmsl:~/cli/tests$ php usage.php
PHP Fatal error:  Uncaught exception 'Cli\RequiredOptionException' with message 'option' in /home/alxmsl/cli/source/CommandPosix.php:92
Stack trace:
#0 /home/alxmsl/cli/tests/usage.php(27): Cli\CommandPosix->parse(true)
#1 {main}
  thrown in /home/alxmsl/sources/cli/CommandPosix.php on line 92

许可证

版权所有 2015 Alexey Maslov alexey.y.maslov@gmail.com

在 Apache License,Version 2.0(“许可证”)下授权;除非遵守许可证的规定,否则不得使用此文件。您可以在以下位置获得许可证副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”提供,不提供任何明示或暗示的保证或条件。有关许可证中规定的具体权限和限制,请参阅许可证。