* @copyright By CatchAdmin * @license https://github.com/yanwenwu/catch-admin/blob/master/LICENSE.txt */ namespace catcher\command\install; use catcher\CatchAdmin; use think\console\Command; use think\console\Input; use think\console\input\Option; use think\console\Output; class ModuleServiceDiscoverCommand extends Command { protected function configure() { $this->setName('catch-service:discover') ->addOption('module', '-m',Option::VALUE_REQUIRED, 'module name') ->setDescription('install catch module service'); } protected function execute(Input $input, Output $output) { $module = $input->getOption('module'); $moduleServices = $this->getServices($module); $services = []; $servicesPath = root_path() . 'vendor' . DIRECTORY_SEPARATOR . 'services.php'; if (file_exists($servicesPath)) { $services = include $servicesPath; } $services = array_unique(array_merge($services, $moduleServices)); $this->exportServices($services, $servicesPath); } /** * 导出服务 * * @time 2020年06月20日 * @param $services * @param $servicesPath * @return void */ protected function exportServices($services, $servicesPath) { $exportArr = var_export($services, true); $currentTime = date('Y-m-d H:i:s'); file_put_contents($servicesPath, <<