小程序容器助力企业在金融与物联网领域实现高效合规运营,带来的新机遇与挑战如何管理?
732
2022-11-03
PHP Simple Console:单文件控制台框架,以帮助您编写构建脚本
PHP Simple Console
Single file console framework to help you write build scripts.
Installation
Use composer:
composer require asika/simple-console
Or downlaod single file to use: Download Here
Getting Started
Use closure
#!/bin/sh phpexecute(function (\Asika\SimpleConsole\Console $app){ // PHP 5.3 $app->out('Hello'); // PHP 5.4 or higher use $this $this->out('Hello'); // Return TRUE will auto convert to 0 exitcode. return true;});
Or Create your own class.
class Build extends \Asika\SimpleConsole\Console{ protected $help = <<
Show HELP
Add -h or --help to show usage, you can add custom usage to $this->help, or override $this->getHelp().
If you want to change h and help option, override $this->helpOptions = array('...').
Handle Error
Just throw Exception in doExecute(), Console will auto catch error.
throw new \RuntimeException('...');
Add -v to show backtrace if error.
Handle Wrong Arguments
Wrong Argument use \Asika\SimpleConsole\CommandArgsException
$arg = $this->getArgument(0);if (!$arg){ throw new \Asika\SimpleConsole\CommandArgsException('Please enter a name.');}
Console will auto show help information.
[Warning] Please enter a name.[Usage] console.php
Multiple Commands
Use delegate() to delegate to different methods.
//... protected function doExecute() { return $this->delegate($this->getArgument(0)); } protected function foo() { $this->getArgument(1); // bar } protected function baz() { // ... }
Now you can add sub commands
php console.php foo barphp console.php baz
If you want to strip first argument after delgated, you can follow this code:
$this->delegate(array_shift($this->args));
Now can use getArgument(0) in sub method and ignore the first command name.
The is another way:
$command = array_shift($this->args);$this->delegate($command, ...$this->args);
protected function foo($first, $second = null){}
API
getArgument($order[, $default = null])
$first = $this->getArgument(0, 'default value');
setArgument($order, $$value)
$this->setArgument(1, 'value');
getOption($name: array|string[, $default = null])
Get option --foo
$this->getOption('foo');
Get option -f or --foo, first match will return.
$this->getOption(array('f', 'foo'));
NOTE: -abc will convert to a => 1, b => 1, c => 1 And -vvv will convert to v => 3
setOption($name, $value)
Set otpion to toption list. $name also support array.
out($string[, $newline: bool = false])
Write to STDOUT,
$this->out('Hello')->out('World');
err($string[, $newline: bool = false])
Write to STDERR
$this->err('Hello')->err('World');
in($string[$default = null, $bool = false)
Ask a question, read from STDIN
$un = $this->in('Please enter username: ', 'default_name');
Read as boolean, add true to third argument:
$bool = $this->in('Are you sure? [Y/n]', [default true/false], true);
yes, y, 1, true will convert to TRUEno, n, 0, false will convert to FALSE
exec($cmd)
A proxy to execute a cmd by exec() and return value.
It will add a title >> {your command} before exec so you will know what has been executed.
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~