首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命令应用程序处理数据的微观框架,无论是php还是python?

命令应用程序处理数据的微观框架,无论是php还是python?
EN

Stack Overflow用户
提问于 2019-03-06 22:56:07
回答 2查看 154关注 0票数 0

下面是我用来构建一个php命令行应用程序来处理数据的内容。

这些应用程序不是web应用程序,它们在命令行shell中运行来处理一些数据。

由于Legacy的原因,我使用了Laravel框架。

因此,我使用Laravel "Artisan Development“构建自定义命令,然后运行命令use

代码语言:javascript
复制
php artisan ...

Laravel是一个网络应用程序,但现在,我只使用它的工匠命令。为此,我安装了的完整版本,这似乎有点过头了。

但我找不到一个好的php微框架,特别是用于构建命令应用程序的。

我的问题是

  • 就像Lumen一样,Laravel的一个微框架,您可以推荐的命令有laravel/php微框架吗?
  • 或者您可以推荐用于命令应用程序的python微框架吗?我在谷歌上搜索,“点击”是推荐的。还有其他框架吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-07 00:38:05

对于Python,我绝对推荐点击。它已经成为用于创建命令行工具的库。它是由烧瓶 (目前是GitHub上最著名的Python #5 )的作者编写/维护的。在创建命令行工具时,我一直使用Click。它拥有大多数人所需要的一切。

不确定您对微框架的定义是什么,但是Click没有外部依赖关系,并且占用了大约的时间。当我安装它时,500 KB (包括.pyc文件)。此外,它实际上不需要任何样板设置和开始使用。所以我想我会称它为微观框架。

票数 1
EN

Stack Overflow用户

发布于 2019-03-07 00:43:12

我建了一个小图书馆,

https://github.com/ArtisticPhoenix/Cli

欢迎您使用它或从中获得灵感,基本上它是getopt()的包装器。

http://php.net/manual/en/function.getopt.php

从命令行参数列表中获取选项

你也可以在作曲家身上找到它:

代码语言:javascript
复制
"require" : {
    "evo/cli" : "~1.0"
}

基本用法如下:

代码语言:javascript
复制
$Cli = Cli::getInstance();
$Cli->setArgument('h', 'help', 'Show this help document');
//... other arguments 
if($Cli->getArgument('h')) $Cli->printHelpDoc(); //exits

诸若此类。

您甚至可以通过PHP文件来完成这一任务,该文件只会被放入setArgument() ~中。

代码语言:javascript
复制
//config.php
return [
         [
           'shortName' => 'h',
           'longName' => 'help',
           'doc' => 'Show this help document'
         ]
      ];

然后

代码语言:javascript
复制
  //cli.php

  $config = require 'config.php';

  $Cli = Cli::getInstance();
  $Cli->fromConfig($config);

  if($Cli->getArgument('h')) $Cli->printHelpDoc(); //exits

您还可以像这样对输入的args进行动态验证(使用闭包):

代码语言:javascript
复制
    $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,它将发出异常,等等。您还可以进行如下所需的论证:

代码语言:javascript
复制
   $Cli->setArgument('i', 'input', 'This is input that requires a value', [
       'requireValue' => true
   ]);

当然,你也可以把这2结合起来。

在Github页面上有一些文档。它有一些小的依赖项,只是我喜欢重复使用的一些常见的东西(都在composer中)。加起来,它少于1000行代码。大概20或30 or。

我需要做个小命令行,我有个主意.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55033522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档