jacekciach/commandline

简单的命令行选项解析器

v1.6.2 2018-09-02 18:21 UTC

This package is not auto-updated.

Last update: 2024-09-30 00:32:28 UTC


README

Build Status

简单的命令行选项解析器。

主要想法是创建一个不需要任何配置的类。

基本用法是创建一个新的对象并开始。

描述

该类解析传递给 $argv 的所有参数。可以通过类的这些方法轻松访问解析后的参数。这些方法在 CommandLine.php 文档中。

命令行参数可以是 选项参数

  • 选项 必须在 参数 之前传递;当解析器遇到第一个 参数 时,所有之后的参数都将被视为 参数
  • 选项 是以连字符 - 开始的参数(例如 -v-4=yes)或以连字符 -- 开始(例如 --enabled--start=now
  • 参数 以不是 选项 的第一个参数开始
  • 该类通常不会过滤 选项,使它们成为必需的、可选的等。
  • 然而,该类支持 $allowedOptions$shortOptionsMap(请参阅类的 __construct 文档);它们是可选的,并且没有使用它们时,CommandLine 也可以正常工作

开发者需要实现与解析参数相关的逻辑(它们的含义、正确性、依赖关系等)。类不会处理这些事情:它的目的是成为 $argv 的便捷“读取器”。

安装

要求

  • PHP 7

使用 Composer

composer require jacekciach/commandline

不使用 Composer

只需从存储库下载 CommandLine.php;这是唯一的必需文件。

然后使用 includerequire 在您的代码中包含此文件。

示例

示例 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