"命令行应用处理数据的微型框架,支持PHP或Python?"

2024-06-16 13:52:51 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我用来构建php命令行应用程序来处理数据的内容。你知道吗

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

由于遗留的原因,我使用了laravelphp框架。你知道吗

因此,我使用Laravel“Artisan Development”来构建自定义命令,然后运行所使用的命令

php artisan ...

Laravel是一个web应用程序,但现在,我只使用它的artisan命令。为了这个目的,我安装了完整版本的Laravel框架,这似乎有点过分了。你知道吗

但我找不到一个好的php微框架专门用来构建命令应用程序。你知道吗

我的问题是

  • 像Lumen,一个由Laravel for API开发的微框架,你有什么可以推荐的命令的Laravel/php微框架吗?你知道吗
  • 或者有什么python微框架可以推荐给命令应用程序吗?我在谷歌上搜索了一下,推荐“点击”。还有别的吗?你知道吗

谢谢!你知道吗


Tags: 数据命令行命令框架web应用程序内容原因
2条回答

对于Python,我绝对推荐Click。它已成为用于创建命令行工具的Python库。它是由Flask(目前GitHub上最受欢迎的5个Python repo)的作者编写/维护的。在创建命令行工具时,我一直使用Click。它拥有大多数人所需要的一切。你知道吗

不确定您对微框架的定义是什么,但Click没有外部依赖关系,在我安装它时大约占用500 KB(包括.pyc文件)。而且,它并不需要任何样板文件来设置和开始使用。所以我想我可以称之为微观框架。你知道吗

我建了一个小图书馆

https://github.com/ArtisticPhoenix/Cli

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

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

getopt — Gets options from the command line argument list

你也可以在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
   ]);

当然你可以把这两个结合起来。你知道吗

Github页面上有一些文档。它有一些小的依赖关系,只是我喜欢重用的普通东西(都在composer中)。总共不到1000行代码。可能是20或30kb。你知道吗

我需要做一个小命令行的东西,我有这个想法。。。你知道吗

相关问题 更多 >