clippy/std

待办事项

v0.4.7 2024-09-18 23:54 UTC

This package is auto-updated.

Last update: 2024-09-18 23:56:48 UTC


README

Clippy 是一个用于 PHP 编写的 CLI 框架,即创建短小、任务特定的独立命令。它基于 mnapoli/silly

脚本 与例如 全业务应用 是不同的领域。

  • 在某些方面,脚本更为简单:一个全业务应用可能包含各种各样的实体、界面、命令和作者。这些组件之间的依赖和规范必须协调一致。相比之下,脚本通常专注于更小的任务,有更大的灵活性来混合和匹配库和规范。
  • 在另一些方面,脚本更为严格:命名/结构/元数据应该尽可能简单,以便快速即兴发挥,并且应该能够频繁、安全地调用其他 CLI 命令。相比之下,全业务应用内置了更多的价值,因此需要更多的结构来区分其内部组件,而且不需要频繁调用外部命令。

注意:为了简化依赖关系管理的流程,示例使用了 pogo。应在 PATH 中安装 pogo。或者,您可以重新设计示例 - 创建一个新的 composer 包,为每个脚本运行 composer require <package>:<version>

示例

#!/usr/bin/env pogo
<?php
#!require clippy/std: ~0.2.0
namespace Clippy;

$c = clippy()->register(plugins());
$c['app']->main('yourName [--lang=]', function ($yourName, $lang, $io) {
  $messages = [
    'de' => "Hallo, <comment>$yourName</comment>!",
    'en' => "Hello, <comment>$yourName</comment>!",
    'es' => "!Hola <comment>$yourName</comment>!",
    'fr' => "Salut, <comment>$yourName</comment>!",
  ];
  $io->writeln($messages[$lang] ?? $messages['en']);
});

以下哪个将执行

$ ./greeter.php world
Hello, world!
$ ./greeter.php Alice --lang=fr
Salut, Alice!

有关更多讨论和示例改进,请参阅 docs/tutorial.md

文档