Skip to content

a php console library, provide console argument parse,color style,user interactive, information show.

License

Notifications You must be signed in to change notification settings

imran-baig-se/php-console

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

82 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

console tool

a php console application library.

  • console application, run command/controller
  • console input/output
  • console color support
  • 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\App;

$meta = [
    'name' => 'My Console App',
    'version' => '1.0.2',
];
$input = new Input;
$output = new Output;
$app = new App($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:

'output-commands-info'

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::chioce())

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

About

a php console library, provide console argument parse,color style,user interactive, information show.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%