1 Star 0 Fork 26

杭州融创科技 / php-console

forked from yg178 / php-console 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README_en.md 5.50 KB
一键复制 编辑 原始数据 按行查看 历史
inhere 提交于 2017-12-24 13:45 . update readme. remove folder images

console application lib

License Php Version Latest Stable Version

a php console application library.

  • console application, run command/controller
  • console command-line params parse
  • console input, output
  • console color support, format message output
  • console interactive

中文README

project

NOTICE

  • master branch -- is require php >= 7 (recommended use)。
  • php5 branch -- It's a branch of PHP 5, but it hasn't been updated for some time (the basic functionality is complete).

install

  • by composer

edit composer.json,at require add

"inhere/console": "dev-master",
// "inhere/console": "dev-php5", // for php5

run: composer update

  • Direct fetch
git clone https://git.oschina.net/inhere/php-console.git // git@osc
git clone https://github.com/inhere/php-console.git // github

usage

use Inhere\Console\IO\Input;
use Inhere\Console\IO\Output;
use Inhere\Console\Application;

$meta = [
    'name' => 'My Console App',
    'version' => '1.0.2',
];
$input = new Input;
$output = new Output;
$app = new Application($meta, $input, $output);

// add command routes
$app->command('demo', function (Input $in, Output $out) {
    $cmd = $in->getCommand();

    $out->info('hello, this is a test command: ' . $cmd);
});

// run
$app->run();

now, you can see:

'app-command-list'

input

example(in terminal):

$ examples/app home/useArg status=2 name=john arg0 -s=test --page=23 --id=154 -e dev -v vvv -d -rf --debug --test=false

NOTICE:

  • These words will be as a Boolean(true) value: on|yes|true
  • These words will be as a Boolean(false) value: off|no|false

get command info:

echo $input->getScript();   // 'examples/app'
echo $input->getCommand(); // 'home/useArg'

get parsed arguments:

var_dump($input->getArgs());

output:

array(3) {
  'status' => string(1) "2"
  'name' => string(4) "john"
  [0] => string(4) "arg0"
}

get parsed options:

var_dump($input->getOpts());

output:

array(10) {          
  's' => string(4) "test"   
  'e' => string(3) "dev"    
  'v' => string(3) "vvv"    
  'd' => bool(true)         
  'r' => bool(true)         
  'f' => bool(true)         
  'page' => string(2) "23"     
  'id' =>   string(3) "154"    
  'debug' => bool(true)         
  'test' => bool(false)        
}

more method:

// argument
$first = $input->getFirstArg(); // 'arg0'
$status = $input->get('status', 'default'); // '2'

// option
$page = $input->getOpt('page') // '23'
$debug = $input->boolOpt('debug') // True
$test = $input->boolOpt('test') // False

get user input:

echo "Your name:";

$text = $input->read(); 
// in terminal
// Your name: simon

echo $text; // 'simon'

output

basic output:

public function write(mixed $messages = '', $nl = true, $quit = false)
$output->write('hello');

formatted output

use color style

alt text

special format output

  • $output->title()
  • $output->section()
  • $output->panel()
  • $output->table()
  • $output->helpPanel()

alt text

more interactive

in the class Inhere\Console\Utils\Interact

interactive method:

Interact::select() (alias Interact::choice())

Select one of the options

select($description, $options, $default = null, $allowExit=true)
choice($description, $options, $default = null, $allowExit=true)
  • example 1:

only values, no setting option

$select = Interact::select('Your city is ?', [
    'chengdu', 'beijing', 'shanghai'
]);

output in terminal:

Your city is ? 
  0) chengdu
  1) beijing
  2) shanghai
  q) Quit // quit option. is auto add. can setting it by 4th argument.
You choice: 0
echo $select; // '0'
  • example 2:

custom option, setting a default value.

$select = Interact::select('Your city is ?', [
    'a' => 'chengdu',
    'b' => 'beijing',
    'c' => 'shanghai'
], 'a');

output in terminal:

Your city is? 
  a) chengdu
  b) beijing
  c) shanghai
  q) Quit // quit option. is auto add. can setting it by 4th argument.
You choice[default:a] : b
echo $select; // 'b'

Interact::confirm()

public static function confirm($question, $default = true) bool

usage:

$result = Interact::confirm('Whether you want to continue ?');

output in terminal:

Whether you want to continue ?
Please confirm (yes|no) [default:yes]: n

result:

var_dump($result); // bool(false)

Interact::question()/Interact::ask()

public static function ask($question, $default = null, \Closure $validator = null)
public static function question($question, $default = null, \Closure $validator = null)
 $answer = Interact::ask('Please input your name?', null, function ($answer) {
     if ( !preg_match('/\w+/', $answer) ) {
         Interact::error('The name must match "/\w+/"');

         return false;
     }

     return true;
  });

License

MIT

PHP
1
https://gitee.com/hangzhou-rongchuang/php-console.git
git@gitee.com:hangzhou-rongchuang/php-console.git
hangzhou-rongchuang
php-console
php-console
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891