function GenerateProxyClassCommand::execute

Same name in other branches
  1. 8.9.x core/lib/Drupal/Core/Command/GenerateProxyClassCommand.php \Drupal\Core\Command\GenerateProxyClassCommand::execute()
  2. 10 core/lib/Drupal/Core/Command/GenerateProxyClassCommand.php \Drupal\Core\Command\GenerateProxyClassCommand::execute()
  3. 11.x core/lib/Drupal/Core/Command/GenerateProxyClassCommand.php \Drupal\Core\Command\GenerateProxyClassCommand::execute()

File

core/lib/Drupal/Core/Command/GenerateProxyClassCommand.php, line 56

Class

GenerateProxyClassCommand
Provides a console command to generate proxy classes.

Namespace

Drupal\Core\Command

Code

protected function execute(InputInterface $input, OutputInterface $output) {
    $class_name = ltrim($input->getArgument('class_name'), '\\');
    $namespace_root = $input->getArgument('namespace_root_path');
    $match = [];
    preg_match('/([a-zA-Z0-9_]+\\\\[a-zA-Z0-9_]+)\\\\(.+)/', $class_name, $match);
    if ($match) {
        $root_namespace = $match[1];
        $rest_fqcn = $match[2];
        $proxy_filename = $namespace_root . '/ProxyClass/' . str_replace('\\', '/', $rest_fqcn) . '.php';
        $proxy_class_name = $root_namespace . '\\ProxyClass\\' . $rest_fqcn;
        $proxy_class_string = $this->proxyBuilder
            ->build($class_name);
        $file_string = <<<EOF
<?php
// phpcs:ignoreFile

/**
 * This file was generated via php core/scripts/generate-proxy-class.php '{<span class="php-variable">$class_name</span>}' "{<span class="php-variable">$namespace_root</span>}".
 */
{{ proxy_class_string }}
EOF;
        $file_string = str_replace([
            '{{ proxy_class_name }}',
            '{{ proxy_class_string }}',
        ], [
            $proxy_class_name,
            $proxy_class_string,
        ], $file_string);
        mkdir(dirname($proxy_filename), 0775, TRUE);
        file_put_contents($proxy_filename, $file_string);
        $output->writeln(sprintf('Proxy of class %s written to %s', $class_name, $proxy_filename));
    }
    return 0;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.