定制 martijnvdb/php-cli 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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 我们能提供哪些服务?
定制开发 / 二次开发

基于 martijnvdb/php-cli 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 16
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 4
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-04-13