PHP Simple Console:单文件控制台框架,以帮助您编写构建脚本

网友投稿 732 2022-11-03

PHP Simple Console:单文件控制台框架,以帮助您编写构建脚本

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 = <<[Options] h | help Show help information v Show more debug information.HELP; protected function doExecute () { $this->out('Hello'); // Return TRUE will auto convert to 0 exitcode. return true; }}$app = new Build;$app->execute();

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 [Options] h | help Show help info. v Show more debug information.

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小时内删除侵权内容。

上一篇:SpringBoot实现启动类的存放位置
下一篇:easyui tree 去掉默认图标,使用fontawesome
相关文章

 发表评论

暂时没有评论,来抢沙发吧~