PHP-CLI是一個簡單的庫,可幫助創建漂亮的命令行腳本。
它照顧
它是輕巧的,沒有第三方依賴性。注意:這僅適用於非互動腳本。它沒有閱讀線或類似的支持。
使用作曲家:
php composer.phar require splitbrain/php-cli
最小示例:
#!/usr/bin/php
<?php
require __DIR__ . ' /../vendor/autoload.php ' ;
use splitbrain phpcli CLI ;
use splitbrain phpcli Options ;
class Minimal extends CLI
{
// register options and arguments
protected function setup ( Options $ options )
{
$ options -> setHelp ( ' A very minimal example that does nothing but print a version ' );
$ options -> registerOption ( ' version ' , ' print version ' , ' v ' );
}
// implement your code
protected function main ( Options $ options )
{
if ( $ options -> getOpt ( ' version ' )) {
$ this -> info ( ' 1.0.0 ' );
} else {
echo $ options -> help ();
}
}
}
// execute it
$ cli = new Minimal ();
$ cli -> run ();
基本用法很簡單:
extend splitbrainphpcliCLIsetup($options)方法和註冊選項,參數,命令和設置幫助文本$options->setHelp()添加了一般描述$options->registerOption()添加一個選項$options->registerArgument()添加一個參數$options->registerCommand()添加一個sub命令main($options)方法,並在此處執行您的業務邏輯$options->getOpts允許您訪問設置選項$options->getArgs()在刪除選項後返回剩餘的參數$options->getCmd()返回用戶使用的sub命令run()在示例目錄中可以找到更多示例。請參閱API文檔以獲取更多信息。
默認情況下,CLI類註冊了一個異常處理程序,並將將異常的消息打印給最終用戶,並使用非零退出代碼退出程序。您可以通過將false傳遞給構造函數來禁用此行為並捕獲所有例外。
您可以使用所提供的splitbrainphpcliException來自行發出主碼中的任何問題。當時,異常代碼將用作退出代碼。
stackTraces將在日誌級別debug中打印。
彩色輸出通過Colors類處理。它試圖檢測是否可用,然後使用終端顏色。您始終可以通過將腳本傳遞給--no-colors輸出來抑制彩色輸出。禁用顏色也將禁用表情符號前綴。
您可以使用Consinence Methods success() (green), info() (cyan), error() (紅色)或fatal() (紅色)打印簡單的彩色日誌消息。後者還將使用非零退出代碼退出程序。
對於更複雜的著色,您可以在腳本中通過$this->colors訪問顏色類。 wrap()方法可能是您要使用的。
表格格式允許著色完整列。使用該機制將顏色數組作為第三參數將其傳遞給其format()方法。請注意,您無法在第二個參數中傳遞彩色文本(文本長度計算和包裝將失敗,打破文本)。
TableFormatter類允許您在多列中對齊文本。它試圖自行找出可用的終端寬度。可以通過設置COLUMNS環境變量來覆蓋它。
通過format()方法使用格式,該方法至少期望兩個數組:第一個定義列寬度,第二個包含文本填充到列中。在每個列之間打印一個邊框(默認情況下是一個空間)。
有關示例用法,請參見example/table.php 。
可以以三種形式給出列寬:
15 )25% )* )當混合固定寬度和百分比寬度時,百分比是指所有固定列分配後剩餘空間。
邊界空間自動計算。建議始終具有一些相對(百分比)或流體柱,以調整不同的端子寬度。
表格格式使用-h或--help調用您的腳本時,可用於自動幫助屏幕。
CLI類是完全兼容的Logger(打印到STDOUT和STDERR的彩色日誌數據)。當您從CLI調用後端代碼(希望Logger實例在運行時產生任何明智的狀態輸出)時,這很有用。
如果您需要傳遞實現PsrLogLoggerInterface的類,則可以通過從實現此接口而不是splitbrainphpcliCLI兩個提供的類之一來繼承來實現。
splitbrainphpcliPSR3CLI的版本2(PHP <8.0)splitbrainphpcliPSR3CLIv3 )然後可以將結果對像作為logger實例傳遞。兩者之間的區別是調整後的方法簽名(僅帶有適當的類型提示)。使用這些類時,請確保您已安裝了建議的psr/log作曲家軟件包。
注意:如果您的後端代碼調用PSR-3 Logger,但實際上並未鍵入接口(又稱loggeraware)的檢查,則還可以通過splitbrainphpcliCLI的實例。
您可以使用--loglevel參數調整CLI工具的詳細性。受支持的loglevels是PSR-3 loglevels和我們自己的success水平:

所有日誌級別的便利方法都可以使用。 PSR-3中所述的佔位符插值也可用。 warning級別STDOUT消息將打印到以下所有STDERR 。
可以通過覆蓋$logdefault成員來設置腳本的默認日誌級別。
有關示例,請參見example/logging.php 。