当初使用 TJ 的 Commander 非常顺手,现在在写 PHP Command Line Tool
的时候,只找到了 symfony/console
,不喜欢 symfony/console
的 Help,不喜欢他的函数的调用方式,所以造了一个 Commander。
还有一些功能细节功能没实现,但是已经可以用了,请大家轻喷。
<?php
use Lijinma\Commander;
require __DIR__ . '/vendor/autoload.php';
$cmd = new Commander();
$cmd
->version('0.0.1')
->option('-p, --peppers', 'Add peppers')
->option('-P, --pineapple', 'Add pineapple')
->option('-b, --bbq', 'Add bbq sauce')
->option('-c, --cheese [type]', 'Add the specified type of cheese')
->parse($argv);
echo 'you ordered a pizza with:' . PHP_EOL;
if (isset($cmd->peppers)) {
echo ' - peppers' . PHP_EOL;
}
if (isset($cmd->pineapple)) {
echo ' - pineapple' . PHP_EOL;
}
if (isset($cmd->bbq)) {
echo ' - bbq' . PHP_EOL;
}
if (isset($cmd->cheese)) {
echo " - $cmd->cheese cheese" . PHP_EOL;
}
<?php
use Lijinma\Commander;
require __DIR__ . '/vendor/autoload.php';
$cmd = new Commander();
$cmd
->version('0.0.1')
->command('rmdir <dir> [otherDirs...]', 'Remove the directory')
->action(
function ($dir, $otherDirs) {
echo 'You will remove the following directory: ' . $dir . PHP_EOL;
if ($otherDirs) {
echo 'And other directories: ' . implode(', ', $otherDirs) . PHP_EOL;
}
}
);
$cmd->command('rm <file>', 'Remove a file')
->action(
function ($file) {
echo 'You will remove the following file: ' . $file . PHP_EOL;
}
);
$cmd->parse($argv);
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.