clippy / std
待办事项
v0.4.7
2024-09-18 23:54 UTC
Requires
- php: >=7.2
- clippy/container: ~1.3.1||~1.4.0
- guzzlehttp/guzzle: ~6.0
- lesser-evil/shell-verbosity-is-evil: ^1.0
- mnapoli/silly: ~1.7
- symfony/process: ~2.8|~3.0|~4.0
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。