| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | <?phpdeclare (strict_types = 1);namespace app\common\command;// 引入框架内置类use think\console\Input;use think\console\Output;use think\console\input\Argument;use think\console\input\Option;use think\console\Command;use app\common\facade\ModelUtils;class MakeModel extends Command{    protected $type = "Model";    protected function configure()    {        $this->setName('makemodel')            ->addArgument('name', Argument::OPTIONAL, "console name")            ->setDescription('Create a new model class');    }    protected function execute(Input $input, Output $output)    {        $name = trim($input->getArgument('name'));        $classname = $this->getClassName($name);        try {            ModelUtils::makeModel($classname);            $output->writeln('<info>' . $this->type . ':' . $classname . ' created successfully.</info>');        } catch (\Exception $e) {            $output->writeln('<error>' . $e->getMessage() . '</error>');        }    }    protected function getClassName($name)    {        if (strpos($name, '\\') !== false) {            return $name;        }        if (strpos($name, '@')) {            [$app, $name] = explode('@', $name);        } else {            $app = '';        }        if (strpos($name, '/') !== false) {            $name = str_replace('/', '\\', $name);        }        return $this->getNamespace($app) . '\\' . $name;    }    protected function getNamespace(string $app): string    {        return 'app' . ($app ? '\\' . $app : '') . '\\model';    }}
 |