[TOC] #### 1. 創(chuàng)建自定義指令 --- **一、第一步: 創(chuàng)建自定義命令類文件** 命令格式 ``` php think make:command 自定義命令類 命令名 ``` 使用示例 ``` php think make:command Hello hello ``` ``` php think make:command index@Hello hello ``` 自定義命令類方法示例 configure() 方法用于指令的配置: 命令名、參數(shù)、選項(xiàng)、描述 execute() 方法在命令行執(zhí)行指令時(shí)會(huì)執(zhí)行 ``` protected function configure() { // 指令配置 $this->setName('hello') ->setDescription('the hello command'); } protected function execute(Input $input, Output $output) { // 指令輸出 $output->writeln('hello'); } ``` **二、第二步:在 `config/console.php` 配置文件定義命令** ```php return [ // 指令定義 'commands' => [ 'hello' => app\command\Hello::class, // 'hello' => app\index\command\Hello::class, ], ]; ``` **三、在命令行測(cè)試運(yùn)行** ``` php think hello ``` #### 2. 指令的參數(shù)、選項(xiàng) --- **一句話概括: 參數(shù)是必寫的,選項(xiàng)的可選的** **指令參數(shù)** ```php protected function configure() { // 指令配置 $this->setName('hello') // 參數(shù) ->addArgument('name', Argument::OPTIONAL, "your name") ->setDescription('Say Hello'); } protected function execute(Input $input, Output $output) { // 獲取name參數(shù)值 $name = trim($input->getArgument('name')); $name = $name ?: 'thinkphp'; // 指令輸出 $output->writeln("Hello," . $name . '!'); } ``` **指令選項(xiàng)** ```php protected function configure() { // 指令配置 $this->setName('hello') // 選項(xiàng) ->addOption('city', null, Option::VALUE_REQUIRED, 'city name') ->setDescription('Say Hello'); } protected function execute(Input $input, Output $output) { if ($input->hasOption('city')) { $city = PHP_EOL . 'From ' . $input->getOption('city'); } else { $city = '無'; } // 指令輸出 $output->writeln("city: " . $city); } ```