haoa / cli
PHP CLI Interactive Commander
v1.0.4
2026-11-13 12:12 UTC
Requires
None
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
PHP 命令行工具,提供命令注册、选项解析和帮助展示。
定义命令
命令继承 Haoa\Cli\BaseRun,在 options 中声明选项,在 main() 中读取参数并执行业务。
use Haoa\Cli\BaseRun; use Haoa\Cli\Flag; use Haoa\Cli\Option; /** 示例命令。 */ class HelloCommand extends BaseRun { /** 声明命令选项,名称不带横线。 */ public function __construct() { $this->options = [ new Option(['names' => ['name', 'n'], 'usage' => '姓名']), new Option(['names' => ['count', 'c'], 'usage' => '次数']), new Option(['names' => ['verbose'], 'usage' => '显示详细信息']), ]; } /** 读取参数并执行命令。 */ public function main(): void { $name = Flag::match('name', 'n')->string('访客'); $count = Flag::match('count', 'c')->int(1); $verbose = Flag::match('verbose')->bool(); $first = Flag::arguments()->first()->string(); $args = Flag::arguments()->array(); echo "你好,{$name},次数:{$count}\n"; } }
注册与运行
入口文件先加载 Composer 自动加载器和命令类,再创建应用:
use Haoa\Cli\Application; $app = new Application(); $app->addArrCommand([ 'name' => 'hello', 'desc' => '问候示例', 'class' => HelloCommand::class, ])->run();
php bin/cli.php hello 文件名 --name=张三 --count=2 --verbose php bin/cli.php hello -n 张三 -c 2 php bin/cli.php -h php bin/cli.php hello -h php bin/cli.php hello --help
参数规则
- 单字符名称使用单横线,如
-n;多字符名称使用双横线,如--name。选项必须在options中声明,未声明的选项会被拒绝。 - 选项值支持
--name=张三和--name 张三。解析器会把选项后紧邻的非横线开头参数当作其值;布尔选项建议放在末尾,或显式写成--verbose=true。 Flag::match()按传入名称顺序匹配,返回值支持string()、int()、float()、bool(),均可传默认值。字符串空值使用默认值;数字通过类型转换读取,不做格式校验。- 布尔选项未传时使用默认值,传入时仅字符串
false表示假,其他值(包括空值、0)都表示真。 Flag::arguments()获取位置参数:first()返回首个值,支持上述类型读取;array()返回字符串数组,values()返回可逐个进行类型读取的FlagValue数组。h、help是公共帮助选项的保留名称,命令不得重复声明,否则执行或查看该命令帮助时会抛出异常。