和蕙健康小程序后端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
1.5 KiB

10 months ago
<?php
namespace addons\shopro\console;
use think\console\Input;
use think\console\Output;
use think\console\Command as BaseCommand;
class Command extends BaseCommand
{
protected $input = null;
protected $output = null;
protected $commonCb = null;
/**
* 执行帮助命令
*/
protected function execute(Input $input, Output $output)
{
$this->input = $input;
$this->output = $output;
if ($this->commonCb && $this->commonCb instanceof \Closure) {
($this->commonCb)($input, $output);
}
$code = $input->getArgument('code');
$code = $code ?: '1';
$this->choose($code);
}
/**
* 选择要执行的命令
*/
public function choose($code)
{
$commands = $this->commands;
$codes = array_column($commands, 'code');
$names = array_column($commands, 'name');
if (!in_array($code, $codes) && !in_array($code, $names)) {
$this->output->writeln("已取消");
return true;
}
$commands = array_column($commands, null, 'code');
$name = isset($commands[$code]) ? $commands[$code]['name'] : $code;
$name = \think\helper\Str::camel($name);
if (method_exists($this, $name)) {
$this->{$name}();
} else {
$this->cancel();
}
}
/**
* 取消操作
*/
public function cancel()
{
$this->output->writeln("已取消");
return true;
}
}