美化数据和记录以显示在客户端输出中

Beautifying data & records for showing in client output

我需要 plugin/component/code 或其他任何可以美化我的数据的东西

在我的框架终端(倒计时)中,用户可以使用以下命令查看我的命令列表:

php countdown help

我想以这样的方式显示命令:

由于倒计时命令是特定的且不可更改的,我可以在一些 txt 文件中创建这种格式,当用户键入帮助命令时通过在终端中获取其内容来打印它

但在某些情况下,例如当用户想查看路线时,我需要将未知数据放入此文本中。所以我需要一个函数,例如我可以把我的用户路由放在它的参数中,例如一个数组,它为我创建这个格式文本

像这样:

$headers = array('Command', 'Description', 'Arguments');
$help_command = Text_Beautifer(self::$commands, $headers);

$headers = array('Route', 'Path', 'Middleware');
$routes = Text_Beautifer(self::$routes, $headers);

有人知道吗?

提前致谢

这里确实隐含了两个问题:

  • 如何美化控制台输出?
  • 如何管理与命令相关的信息?

如何美化控制台输出

最简单的入门方法是使用 printf 命令格式化列表的输出。

这里有很多例子PHP manual

How to make alignment on console in php 上有一个很好的答案。

也许在终端中打印 table 最棘手的方面是将输出调整为终端的宽度并分析您的数据以了解在开始打印之前将列设置为多宽。

这是一个简单的 table,其中包含一些入门想法:

$width=22;
echo str_repeat("-", $width)."\n";
printf( "| %-10s",  "name");
printf( "| %6d", 44);
echo " |\n";
echo str_repeat("-", $width)."\n";

创建这个:

----------------------
| name      |     44 |
----------------------

您可以通过以下方式检索终端 window 的宽度:

$width=intval(shell_exec("tput cols");

剩下的计算由您决定。


如何管理与命令相关的信息

随着我的命令行脚本和命令套件越来越多,我开始考虑组织逻辑和表示的框架。

Symfony Console 看起来不错。它负责管理命令选项及其要求,以及帮助文本。