CraftCli\Application::addComposerPlugins PHP Метод

addComposerPlugins() публичный Метод

Find any Command plugins installed via composer and add them to the Application
public addComposerPlugins ( ) : void
Результат void
    public function addComposerPlugins()
    {
        if (!$this->vendorPath) {
            return;
        }
        $installedJsonPath = rtrim($this->vendorPath, '/') . '/composer/installed.json';
        if (!file_exists($installedJsonPath)) {
            return;
        }
        $installedJsonContents = file_get_contents($installedJsonPath);
        if (!$installedJsonContents) {
            return;
        }
        $installed = json_decode($installedJsonContents, true);
        if (!$installed || !is_array($installed)) {
            return;
        }
        $plugins = array_filter($installed, function ($package) {
            return !empty($package['extra']['craft-cli']['commands']) || !empty($package['extra']['craft-cli']['commandDirs']);
        });
        foreach ($plugins as $package) {
            $namespace = isset($package['extra']['craft-cli']['namespace']) ? rtrim($package['extra']['craft-cli']['namespace'], '\\') . '\\' : null;
            if (!empty($package['extra']['craft-cli']['commandDirs'])) {
                foreach ($package['extra']['craft-cli']['commandDirs'] as $commandDir) {
                    $path = rtrim($this->vendorPath, '/') . '/' . $package['name'] . '/' . $commandDir;
                    $commands = $this->findCommandsInDir($path, $namespace);
                    foreach ($commands as $command) {
                        $this->registerCommand($command);
                    }
                }
            }
            if (!empty($package['extra']['craft-cli']['commands'])) {
                foreach ($package['extra']['craft-cli']['commands'] as $command) {
                    $this->registerCommand($namespace . $command);
                }
            }
        }
    }