czproject/phpcli

PHP CLI 应用的辅助类。

资助包维护!
其他

v5.0.0 2023-04-06 12:24 UTC

README

Build Status Downloads this Month Latest Stable Version License

Donate

安装

下载最新包 或使用 Composer

composer require czproject/phpcli

PhpCli 需要 PHP 5.6 或更高版本,可选的 Readline 扩展

用法

use CzProject\PhpCli\ConsoleFactory;

require __DIR__ . '/vendor/autoload.php';

$console = ConsoleFactory::createConsole();

// output
$console->output('CzProject CLI Simple Console', 'green')
	->nl() // new line
	->output('Hey!', 'yellow')
	->nl()
	->output('Fred!', 'blue')
	->nl()
	->output('Fred is dead!', 'red')
	->nl()
	->output(['nooooooo...!', ' ', 'But, no problem!'], 'gray')
	->nl()
	->output('The end.')
	->nl();

// input
$username = $console->input('Enter your name');

$console->output('Hello! ', 'blue')
	->output($username, 'green')
	->output(' [user]', 'yellow')
	->nl() // print new line
	->output('Bye!', 'blue')
	->nl();

// input with default value
$username = $console->input('Enter your name', 'John');

// confirm
$agree = $console->confirm('Do you want to continue?');

// confirm with default value
$canQuit = $console->confirm('Really?', TRUE);

// select
$value = $console->select('Select color:', [
	'value' => 'label',
	'#ff0000' => 'Red',
	'#00ff00' => 'Green',
	'#0000ff' => 'Blue',
]);

// select with default value
$value = $console->select('Select color:', [
	'value' => 'label',
	'#ff0000' => 'Red',
	'#00ff00' => 'Green',
	'#0000ff' => 'Blue',
], '#ff0000');

参数

参数

$name = $console->getArgument(0)->getValue(); // string|NULL

$size = $console->getArgument(1, 'int')
	->setRequired()
	->addRule(function ($value) {
		return $value > 0;
	})
	->getValue();

$price = $console->getArgument(2, 'float') // float
	->setDefaultValue(100.0)
	->getValue();

选项

$name = $console->getOption('name')->getValue(); // string|NULL

$size = $console->getOption('size', 'int')
	->setRequired()
	->addRule(function ($value) {
		return $value > 0;
	})
	->getValue();

$price = $console->getOption('price', 'float') // float
	->setDefaultValue(100.0)
	->getValue();

$words = $console->getOption('word')
	->setRepeatable()
	->getValue();

支持的类型

  • 字符串
  • intinteger
  • 浮点数
  • boolboolean

许可证: 新BSD许可证
作者:Jan Pecha,https://www.janpecha.cz/