下面是我用来构建一个php命令行应用程序来处理数据的内容。
这些应用程序不是web应用程序,它们在命令行shell中运行来处理一些数据。
由于Legacy的原因,我使用了Laravel框架。
因此,我使用Laravel "Artisan Development“构建自定义命令,然后运行命令use
php artisan ...Laravel是一个网络应用程序,但现在,我只使用它的工匠命令。为此,我安装了的完整版本,这似乎有点过头了。
但我找不到一个好的php微框架,特别是用于构建命令应用程序的。
我的问题是
谢谢!
发布于 2019-03-07 00:38:05
对于Python,我绝对推荐点击。它已经成为用于创建命令行工具的库。它是由烧瓶 (目前是GitHub上最著名的Python #5 )的作者编写/维护的。在创建命令行工具时,我一直使用Click。它拥有大多数人所需要的一切。
不确定您对微框架的定义是什么,但是Click没有外部依赖关系,并且占用了大约的时间。当我安装它时,500 KB (包括.pyc文件)。此外,它实际上不需要任何样板设置和开始使用。所以我想我会称它为微观框架。
发布于 2019-03-07 00:43:12
我建了一个小图书馆,
https://github.com/ArtisticPhoenix/Cli
欢迎您使用它或从中获得灵感,基本上它是getopt()的包装器。
http://php.net/manual/en/function.getopt.php
从命令行参数列表中获取选项
你也可以在作曲家身上找到它:
"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您还可以像这样对输入的args进行动态验证(使用闭包):
$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页面上有一些文档。它有一些小的依赖项,只是我喜欢重复使用的一些常见的东西(都在composer中)。加起来,它少于1000行代码。大概20或30 or。
我需要做个小命令行,我有个主意.
https://stackoverflow.com/questions/55033522
复制相似问题