Minicli 是一個極簡、無依賴的框架,用於建立以 CLI 為中心的 PHP 應用程式。它提供了一種結構化的方式來組織命令,以及各種幫助程序,以方便使用命令參數、獲取用戶的輸入以及列印彩色輸出。
快速連結:
無依賴性意味著什麼?這意味著您可以建立一個工作的 CLI PHP 應用程序,而無需數十個嵌套的用戶級依賴項。基本的minicli/minicli
套件僅具有測試相依性和單一系統需求:
注意:如果您想取得使用者輸入,也需要
readline
PHP 擴充功能。
它為您提供了很大的空間來選擇自己的依賴項。
有兩種方法可以開始。如果您想要最低限度(我們稱之為「極簡應用程式」),您可以使用整個應用程式建立單一 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 個內建主題:
若要設定主題,請在腳本中初始化 App 時傳入一個帶有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」的系列,其中我們從頭開始建立minicli
:
注意:自從系列最初編寫以來,Minicli 已經發生了很大的變化,但那是今天 Minicli 的基礎。