martijnvdb/php-cli
Composer 安装命令:
composer require martijnvdb/php-cli
包简介
Command line interface library for PHP
关键字:
README 文档
README
This library helps you to create CLI applications quicky.
Installation
You can install the package via composer:
composer require martijnvdb/php-cli
Usage
Add the composer autoloader to your application and create a new instance of the CLI class. To run the application, use the run() method. This example will be placed in a file called myapp (without the .php extension).
require __DIR__ . '/vendor/autoload.php'; use Martijnvdb\PhpCli\Cli; $cli = (new Cli('First CLI App', '0.1.0'))->run();
To add a default command to the application use the add() method. Use a callback function as the first argument. This callback will be called without giving any extra arguments. To execute the script, run php myapp.
$cli = new Cli('First CLI App', '0.1.0'); $cli->add(function ($input, $output) { // ... }) ->run();
The add() method can also be used to register a command to your application. This example will be executed by running php myapp helloworld.
$cli = new Cli('First CLI App', '0.1.0'); $cli->add('helloworld', function ($input, $output) { // ... }) ->run();
Using the $options variable
The $options object will contain all the command line arguments. You can retrieve the values using the all() and get() methods. The example will return the following while running php myapp helloworld --message "Hello, World!"'.
$cli->add('helloworld', function ($options, $output) { // This will return all options $options = $options->all(); // This will return the value of the '--message' option $message = $options->get('--message'); // Will return the value of the '--message' or '-m' option $message = $options->get('--message', '-m'); // $options = ["--message" => "Hello, World!"]; // $message = "Hello, World!"; })
Using the $output variable
The $output object will help you formatting your output.
BB Code
This library support a custom version of BB code to help you style your output. You can mix and match any tags as long as they start with an opening and closing tag.
$output->line('[bold]Bold Text[/bold]'); $output->line('[red]Red Text[/red]'); $output->line('[bg:green]Green Background[/bg:green]'); $output->line('[bg:white][magenta][italic]Italic magenta text on a white background[/italic][/magenta][/bg:white]');
Styling
These will change the style of the text.
[bold], [b], [dim], [italic], [i], [underline], [u], [blink], [inverse], [reverse], [invisible], [strikethrough], [s]
Text colors
These will change the color of the text.
[black],[red],[green],[yellow],[blue],[magenta],[cyan],[white]
Background colors
These will change the background color of the text.
[bg:black], [bg:red], [bg:green], [bg:yellow], [bg:blue], [bg:magenta], [bg:cyan], [bg:white]
$output Methods
The $output object contains the following methods:
Basic text
Four basis text output methods. The only difference between them is how they handle new lines.
$output->echo(string $value = ''); $output->line(string $value = ''); $output->lines(array $lines = []); $output->paragraph(string $value = '');
Version
Output the current version of the application.
$output->version();
Columns
Output a formatted column. The $rows variable is an array containing arrays in which each entry is a cell. The $column_styles variable allows you to style a full column in the same style. You should use the BB code without brackets for this.
$output->columns(string $label, array $rows = [], array $column_styles = []);
Take a look at examples/generate to see some examples of how to use these methods.
Input Helper Class
This library also contains a helper class which allows the application to easily get a specific input of the user.
$input = Input::text(string $label)->get(); $input = Input::number(string $label)->get(); $input = Input::url(string $label)->get(); $input = Input::email(string $label)->get(); $input = Input::choice(string $label, array $options)->get();
Example of the choice input helper:
$input = Input::choice('[yellow]Select an option[/yellow] [green](1/2/3)[/green]:', [ '1' => 'Option 1', '2' => 'Option 2', '3' => 'Option 3' ]) ->required() ->setDefault('1') ->get();
Input methods
Force the use to give an input
If the given input is empty, then a required message will show up.
$input->required(string $message);
Set a default
If the user doesn't give an input, the given default value will be returned.
$input->setDefault($default);
Set the invalid message
The message that will show up when the user enters an invalid input.
$input->setInvalidMessage(string $message);
Set the input styling
The $options array can be filled with BB code tags without the brackets (eg. ['red', 'bold']).
$input->inputStyling($options = []);
Progress Helper Class
The Progress class shows a progressbar in the console. Using a float between 0 and 1 as an argument in the set() method, you can set the current percentage of the progressbar. The progressbar will also display how long it is running and the expected remaing time (ETA). The start() method will start the timer for those values. The stop() method will stop the timers and the progressbar.
$progress = Progress::new(); $progress->start(); $progress->set(0.25); $progress->set(0.5); $progress->set(0.75); $progress->set(1); $progress->stop();
Progress Customization
You can customize the look of the progressbar using the size(), foreground() and background() methods.
// Default size $progress->size(30); // Default templates $progress->foreground('[bg:white][invisible]|[/invisible][/bg:white]'); $progress->background('[bg:240][invisible].[/invisible][/bg:240]');
martijnvdb/php-cli 适用场景与选型建议
martijnvdb/php-cli 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 16 次下载、GitHub Stars 达 2, 最近一次更新时间为 2021 年 04 月 13 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「cli」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 martijnvdb/php-cli 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 martijnvdb/php-cli 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 martijnvdb/php-cli 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Slim starter / Slim skeleton package to boost your development with Slim framework
Generates a trait to help ease the access of custom repo methods
Eco CLI for Laravel .env syncing
Read Pulo.dev feeds in terminal
Library to work with CLI color codes
A static site generator powered by PHP and the command line
统计信息
- 总下载量: 16
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 4
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-04-13