这是我用来构建一个php命令行应用程序来处理数据。
这些应用程序不是Web应用程序,它们在命令行shell中运行以处理某些数据。
由于Legacy原因,我使用Laravel php框架。
所以我使用Laravel“Artisan Development”来构建自定义命令,然后运行命令use
php artisan ...
Laravel是一个网络应用程序,但现在,我只使用它的工匠命令。这似乎是一种矫枉过正,我为此目的安装了完整版Laravel Framework。
但我找不到一个专门用于构建命令应用程序的好的PHP微框架。
我的问题是
谢谢!
我做了这个小图书馆,
https://github.com/ArtisticPhoenix/Cli
欢迎您使用它或从中获取灵感,基本上它是围绕getopt()
的包装
http://php.net/manual/en/function.getopt.php
getopt - 从命令行参数列表中获取选项
你也可以在作曲家上得到它:
"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或30kb。
我需要制作一个小命令行,我有这个想法......