Я сделал эту маленькую библиотеку,
https://github.com/ArtisticPhoenix/Cli
Вы можете использовать ее или получить вдохновение от нее, в основном это обертка вокруг getopt()
http://php.net/manual/en/function.getopt.php
getopt - получает параметры из списка аргументов командной строки
Вы также можете получить его в composer:
"require" : {
"evo/cli" : "~1.0"
}
Базовое использованиекак это:
$Cli = Cli::getInstance();
$Cli->setArgument('h', 'help', 'Show this help document');
//... other arguments
if($Cli->getArgument('h')) $Cli->printHelpDoc(); //exits
и т. д.
Вы даже можете сделать это из файла конфигурации PHP, который просто помещается в setArgument()
~ в основном.
//config.php
return [
[
'shortName' => 'h',
'longName' => 'help',
'doc' => 'Show this help document'
]
];
Тогда
//cli.php
$config = require 'config.php';
$Cli = Cli::getInstance();
$Cli->fromConfig($config);
if($Cli->getArgument('h')) $Cli->printHelpDoc(); //exits
Вы также можете выполнить динамическую проверку входных аргументов следующим образом (с закрытием):
$Cli->setArgument('f', 'foo', 'This is just foo, and must always be foo', [
'accept' => function($shortName, $value){
if($value == 'foo') return true;
return false;
}
]);
Выше просто возвращает логическое значение, если значениехорошо это или нет.Если вы вернете false, это выдаст исключение и т. Д. Вы также можете сделать требуемый аргумент следующим образом:
$Cli->setArgument('i', 'input', 'This is input that requires a value', [
'requireValue' => true
]);
И, конечно, вы можете объединить эти 2.
Есть некоторая документацияна странице Github.У него есть несколько небольших зависимостей, просто общие вещи, которые я люблю использовать повторно (все в композиторе).Вместе это менее 1000 строк кода.Может быть, 20 или 30 Кб.