ThinkPHP6.0配置控制台命令参数需在configure()中用addArgument()和addOption()声明;参数按位置传入,选项以--key形式传入;execute()中通过$input->getArgument()和$input->getOption()获取;须注册到config/console.php并执行--help验证。

ThinkPHP6.0 配置控制台命令参数,核心在于自定义命令类中使用 addArgument() 和 addOption() 方法,在 configure() 方法里声明参数与选项的类型、是否必填、描述等信息。参数(arguments)按位置顺序传入,选项(options)以 --key value 形式传入,两者在命令执行时可混合使用。
定义参数(Arguments)
参数是命令后紧跟的、无前缀的字符串,靠空格分隔,有明确顺序。常用于必需或主操作对象,比如用户名、ID 等。
-
必填参数:用
Argument::REQUIRED,调用命令时必须提供,否则报错 -
可选参数:用
Argument::OPTIONAL,不传则取默认值或为空 -
数组参数:用
Argument::IS_ARRAY,支持传入多个同名参数,如php think import a b c
示例:
$this->addArgument('name', Argument::REQUIRED, '用户姓名')
->addArgument('email', Argument::OPTIONAL, '用户邮箱');
调用方式:php think import zhangsan zhangsan@example.com
立即学习“PHP免费学习笔记(深入)”;
定义选项(Options)
选项以 -- 开头,更灵活,适合开关、配置类输入,如 --force、--limit=100。
-
无值选项(布尔型):用
Option::VALUE_NONE,仅表示开启,如--quiet -
必填值选项:用
Option::VALUE_REQUIRED,必须带值,如--env=prod或--env prod -
可选值选项:用
Option::VALUE_OPTIONAL,可带可不带值,默认为null
示例:
$this->addOption('city', null, Option::VALUE_REQUIRED, '所在城市')
->addOption('dry-run', null, Option::VALUE_NONE, '仅预览不执行');
调用方式:php think hello --city=Beijing --dry-run
在 execute() 中获取参数和选项
通过 $input 对象统一读取,方法清晰对应:
- 获取参数:
$input->getArgument('name') - 判断选项是否存在:
$input->hasOption('dry-run') - 获取选项值:
$input->getOption('city')
注意:未声明的参数或选项不会被框架识别,也不会出现在 --help 提示中。
注册命令并测试帮助信息
确保命令类已正确注册到 config/console.php,例如:
return [
'commands' => [
'hello' => 'app\command\Hello',
],
];
然后运行 php think hello --help,即可看到自动渲染的参数说明、选项列表和描述,这是验证配置是否生效的最直接方式。



















