Вот что я использую для создания приложений командной строки php для обработки данных.
Эти приложения не являются веб-приложениями, они запускаются в оболочке командной строки для обработки некоторых данных.
По причине Legacy я использую php-фреймворк Laravel.
Поэтому я использую Laravel «Artisan Development» для создания пользовательских команд, а затем запускаю команды, используя
php artisan ...
Laravel предназначен для веб-приложения, но сейчас я использую только его ремесленные команды. Кажется излишним, что для этой цели я устанавливаю полную версию Laravel Framework.
Но я не смог найти хороший php-микрофреймворк специально для создания приложения команд.
Мои вопросы
Спасибо!






Для Python я определенно рекомендую Нажмите. Она стала библиотекой Python в для создания инструментов командной строки. Он написан/поддерживается автором Колба (в настоящее время репозиторий Python №5 по количеству звезд на GitHub). Я постоянно использую Click при создании инструментов командной строки. В нем есть все, что нужно большинству людей.
Не знаю, какое у вас определение микрофреймворка, но Click не имеет внешних зависимостей и занимает ок. 500 КБ (включая файлы .pyc) при установке. Кроме того, для установки и начала использования не требуется никаких шаблонов. Так что я бы назвал это микро-фреймворком.
Я сделал эту небольшую библиотеку,
https://github.com/ArtisticPhoenix/Cli
Добро пожаловать, чтобы использовать его или черпать из него вдохновение, в основном это обертка вокруг getopt()
http://php.net/manual/en/function.getopt.php
getopt — Gets options from the command line argument list
Вы также можете получить его на композиторе:
"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кб.
Мне нужно было сделать небольшую штуку с командной строкой, и у меня появилась идея...
У меня есть один, который я сделал, если хотите, Гитхаб, он настолько мал, насколько это возможно, это как 1 файл. Должен быть довольно прост в использовании.