Minicli は、CLI 中心の PHP アプリケーションを構築するための最小限の依存関係のないフレームワークです。これは、コマンドを整理するための構造化された方法を提供するだけでなく、コマンド引数の操作、ユーザーからの入力の取得、およびカラー出力の印刷を容易にするさまざまなヘルパーを提供します。
クイックリンク:
依存から解放されるとはどういう意味ですか?これは、何十ものネストされたユーザーランド依存関係なしで、動作する CLI PHP アプリケーションを構築できることを意味します。基本的なminicli/minicli
パッケージにはテストの依存関係のみが含まれており、システム要件は 1 つだけです。
注: ユーザー入力を取得したい場合は、
readline
PHP 拡張機能も必要です。
独自の依存関係を選択する余地がたくさんあります。
開始するには 2 つの方法があります。必要最小限の、いわゆる「ミニマリスト アプリ」が必要な場合は、アプリケーション全体を含む 1 つの PHP スクリプトを作成できます。コマンドとサブコマンドを備えた、より構造化されたアプリケーションが必要な場合は、コマンド ネームスペースを使用してコマンドをコントローラに編成する必要があります。
minicli
介して実行するいくつかの簡単なコマンドをセットアップしたい場合は、 App
を作成し、コマンドを匿名関数として登録するだけです。
composer require minicli/minicli
」を実行します。これにより、新しいcomposer.json
ファイルが生成されます。minicli
スクリプトを作成します。 #!/usr/bin/env php
<?php
if ( php_sapi_name () !== ' cli ' ) {
exit ;
}
require __DIR__ . ' /vendor/autoload.php ' ;
use Minicli App ;
use Minicli Command CommandCall ;
$ app = new App ();
$ app -> setSignature ( ' ./minicli mycommand ' );
$ app -> registerCommand ( ' mycommand ' , function ( CommandCall $ input ) {
echo " My Command! " ;
var_dump ( $ input );
});
$ app -> runCommand ( $ argv );
次に、それを実行可能にし、次のコマンドでminicli
実行します。
chmod +x minicli
./minicli mycommand
コントローラーとサービスを使用するより構造化されたアプリケーションの場合は、コマンド名前空間を使用するのが最善です。私たちのアプリケーション テンプレート リポジトリは、Minicli をそのように設定するための優れた出発点/テンプレートです。
minicli/application
テンプレートを使用して新しいプロジェクトを作成するには、次を実行します。
composer create-project --prefer-dist minicli/application myapp
これにより、次のようなディレクトリ構造が生成されます。
.
app
└── Command
└── Help
├── DefaultController.php
├── TableController.php
└── TestController.php
├── composer.json
├── docs
├── LICENSE
├── minicli
├── mkdocs.yml
└── README.md
app/Command
内の各ディレクトリはコマンド名前空間を表します。 app/Command/Help
内のクラスは、メインのhelp
コマンドからアクセスできるサブコマンドを表します。
これで、次のコマンドを使用してブートストラップされたアプリケーションを実行できるようになります。
./minicli help
このドキュメントには、コマンドの作成と出力の操作に関する詳細情報が含まれています。
Minicli は、コマンドライン出力のスタイルを変更するためのカラーテーマの使用をサポートしています。現在、デフォルトのテーマ以外に 3 つの組み込みテーマがあります。
テーマを設定するには、スクリプトでアプリを初期化するときに、 theme
値を含む構成配列を渡します。組み込みテーマには先頭に文字が必要です。
$ app = new App ([
' theme ' => ' Unicorn '
]);
デフォルトの組み込みテーマを使用するには、テーマ構成設定を含めないか、空の文字列に設定します。
ユーザー定義のテーマをプロジェクト内で作成して定義することもできます。この場合、先頭のを付けずに、名前空間を含むテーマ名を設定します。
$ app = new App ([
' theme ' => ' AppThemeBlueTheme '
]);
上記の設定では、次のサンプルテーマが使用されます。
<?php
// File : app / Theme / BlueTheme . php
namespace App Theme ;
use Minicli Output Theme DefaultTheme ;
use Minicli Output CLIColors ;
class BlueTheme extends DefaultTheme
{
public function getThemeColors (): array
{
return [
' default ' => [ CLIColors:: $ FG_BLUE ],
' alt ' => [ CLIColors:: $ FG_BLACK , CLIColors:: $ BG_BLUE ],
' info ' => [ CLIColors:: $ FG_WHITE ],
' info_alt ' => [ CLIColors:: $ FG_WHITE , CLIColors:: $ BG_BLUE ]
];
}
}
ユーザー定義テーマでは、デフォルトのテーマのスタイルをオーバーライドするスタイルを定義するだけで済みます。
貢献は大歓迎です!コード、ドキュメント、問題の提出などで貢献することができます...貢献プロセスと私たちがあなたに期待していることの詳細については、貢献ドキュメントを参照してください。
Minicli はテスト フレームワークとして Pest PHP を使用しています。 composer install
使用してすべての依存関係をインストールしたら、次のコマンドを使用してテスト スイートを実行できます。
./vendor/bin/pest
コード カバレッジ レポートを取得するには、 xdebug
インストールする必要があります。次に、次を実行できます。
./vendor/bin/pest --coverage
これにより、コード カバレッジに関する詳細情報が得られます。
dev.to に関する次のチュートリアルは、 minicli
最初から作成する「Building Minicli」という名前のシリーズを構成しています。
注: Minicli は、そのシリーズが最初に書かれて以来、大きく進化しましたが、それが今日の Minicli の基礎でした。