jacekciach / commandline
简单的命令行选项解析器
v1.6.2
2018-09-02 18:21 UTC
Requires
- php: ^7.0
Requires (Dev)
- phpunit/phpunit: ^6.5
This package is not auto-updated.
Last update: 2024-09-30 00:32:28 UTC
README
简单的命令行选项解析器。
主要想法是创建一个不需要任何配置的类。
基本用法是创建一个新的对象并开始。
描述
该类解析传递给 $argv
的所有参数。可以通过类的这些方法轻松访问解析后的参数。这些方法在 CommandLine.php
文档中。
命令行参数可以是 选项
或 参数
选项
必须在参数
之前传递;当解析器遇到第一个参数
时,所有之后的参数都将被视为参数
选项
是以连字符-
开始的参数(例如-v
,-4=yes
)或以连字符--
开始(例如--enabled
,--start=now
)参数
以不是选项
的第一个参数开始- 该类通常不会过滤
选项
,使它们成为必需的、可选的等。 - 然而,该类支持
$allowedOptions
和$shortOptionsMap
(请参阅类的__construct
文档);它们是可选的,并且没有使用它们时,CommandLine
也可以正常工作
开发者需要实现与解析参数相关的逻辑(它们的含义、正确性、依赖关系等)。类不会处理这些事情:它的目的是成为 $argv
的便捷“读取器”。
安装
要求
- PHP 7
使用 Composer
composer require jacekciach/commandline
不使用 Composer
只需从存储库下载 CommandLine.php
;这是唯一的必需文件。
然后使用 include
或 require
在您的代码中包含此文件。
示例
示例 1。
<?php require_once __DIR__. '/vendor/autoload.php'; use CommandLine\CommandLine; $cmd = new CommandLine(); var_export(array( "binary" => $cmd->binary(), // returns PHP_BINARY "script" => $cmd->script(), // returns the name of the script "options" => $cmd->options(), // returns all "options" passed from command line "params" => $cmd->params(), // returns all "params" passed from command line )); echo PHP_EOL;
所以一个命令
$ php example1.php --start --msg="Hello, World!" file1.txt --book
将返回类似的结果
array (
'binary' => '/usr/bin/php7.0',
'script' => 'example1.php',
'options' =>
array (
'start' => true,
'msg' => 'Hello, World!',
),
'params' =>
array (
0 => 'file1.txt',
1 => '--book'
),
)
示例 2。
$ php example2.php --start --msg="Hellow World!" "Test Application" user
<?php require_once __DIR__. '/vendor/autoload.php'; use CommandLine\CommandLine; $cmd = new CommandLine(); echo 'start = ' . var_export($cmd->option('start'), true) . PHP_EOL; echo 'msg = ' . var_export($cmd->option('msg'), true) . PHP_EOL; echo 'stop = ' . var_export($cmd->option('stop'), true) . PHP_EOL; // reading a not existing options will return NULL echo PHP_EOL; echo 'param(0) = ' . var_export($cmd->param(0), true) . PHP_EOL; echo 'param(1) = ' . var_export($cmd->param(1), true) . PHP_EOL; echo 'param(2) = ' . var_export($cmd->param(2), true) . PHP_EOL; // reading a not existing param will return NULL
将输出
start = true
msg = 'Hellow World!'
stop = NULL
param(0) = 'Application name'
param(1) = 'user'
param(2