<?php<448901948@qq.com>declare (strict_types = 1);
namespace think\console\command;
use think\console\Command;
use think\console\Input;
use think\console\Output;
class ServiceDiscover extends Command
{
public function configure()
{
$this->setName('service:discover')
->setDescription('Discover Services for ThinkPHP');
}
public function execute(Input $input, Output $output)
{
if (is_file($path = $this->app->getRootPath() . 'vendor/composer/installed.json')) {
$packages = json_decode(@file_get_contents($path), true);
$services = [];
foreach ($packages as $package) {
if (!empty($package['extra']['think']['services'])) {
$services = array_merge($services, (array) $package['extra']['think']['services']);
}
}
$header =
$content = '<?php ' . PHP_EOL . $header . "return " . var_export($services, true) . ';';
file_put_contents($this->app->getRootPath() . 'vendor/services.php', $content);
$output->writeln('<info>Succeed!</info>');
}
}
}