alxmsl / cli
支持 php-cli 脚本选项的简单库
v2.0.1
2015-07-09 10:10 UTC
Requires (Dev)
- phpunit/phpunit: 4.7.*
This package is not auto-updated.
Last update: 2024-09-14 15:58:02 UTC
README
这是一个用于支持 php-cli 脚本选项的简单类集
优点
- 轻量级 - 仅使用两个类来处理命令选项
- 事件帮助提高代码的灵活性
- 自加载。您只需要包含一个文件
- 独立的命名空间有助于在不同的项目和框架上使用 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
除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”提供,不提供任何明示或暗示的保证或条件。有关许可证中规定的具体权限和限制,请参阅许可证。