You are here

class GenerateProxyClassCommand in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/lib/Drupal/Core/Command/GenerateProxyClassCommand.php \Drupal\Core\Command\GenerateProxyClassCommand

Provides a console command to generate proxy classes.

Hierarchy

Expanded class hierarchy of GenerateProxyClassCommand

File

core/lib/Drupal/Core/Command/GenerateProxyClassCommand.php, line 19
Contains \Drupal\Core\Command\GenerateProxyClassCommand.

Namespace

Drupal\Core\Command
View source
class GenerateProxyClassCommand extends Command {

  /**
   * The proxy builder.
   *
   * @var \Drupal\Component\ProxyBuilder\ProxyBuilder
   */
  protected $proxyBuilder;

  /**
   * Constructs a new GenerateProxyClassCommand instance.
   *
   * @param \Drupal\Component\ProxyBuilder\ProxyBuilder $proxy_builder
   *   The proxy builder.
   */
  public function __construct(ProxyBuilder $proxy_builder) {
    parent::__construct();
    $this->proxyBuilder = $proxy_builder;
  }

  /**
   * {@inheritdoc}
   */
  protected function configure() {
    $this
      ->setName('generate-proxy-class')
      ->setDefinition([
      new InputArgument('class_name', InputArgument::REQUIRED, 'The class to be proxied'),
      new InputArgument('namespace_root_path', InputArgument::REQUIRED, 'The filepath to the root of the namespace.'),
    ])
      ->setDescription('Dumps a generated proxy class into its appropriate namespace.')
      ->addUsage('\'Drupal\\Core\\Batch\\BatchStorage\' "core/lib/Drupal/Core"')
      ->addUsage('\'Drupal\\block\\BlockRepository\' "core/modules/block/src"')
      ->addUsage('\'Drupal\\mymodule\\MyClass\' "modules/contrib/mymodule/src"');
  }

  /**
   * {@inheritdoc}
   */
  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

/**
 * @file
 * Contains \\{{ proxy_class_name }}.
 */

/**
 * 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));
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Command::$aliases private property
Command::$application private property
Command::$applicationDefinitionMerged private property
Command::$applicationDefinitionMergedWithArgs private property
Command::$code private property
Command::$definition private property
Command::$description private property
Command::$help private property
Command::$helperSet private property
Command::$ignoreValidationErrors private property
Command::$name private property
Command::$processTitle private property
Command::$synopsis private property
Command::$usages private property
Command::addArgument public function Adds an argument.
Command::addOption public function Adds an option.
Command::addUsage public function Add a command usage example.
Command::asText Deprecated public function Returns a text representation of the command.
Command::asXml Deprecated public function Returns an XML representation of the command.
Command::getAliases public function Returns the aliases for the command.
Command::getApplication public function Gets the application instance for this command.
Command::getDefinition public function Gets the InputDefinition attached to this Command.
Command::getDescription public function Returns the description for the command.
Command::getHelp public function Returns the help for the command.
Command::getHelper public function Gets a helper instance by name.
Command::getHelperSet public function Gets the helper set.
Command::getName public function Returns the command name.
Command::getNativeDefinition public function Gets the InputDefinition to be used to create XML and Text representations of this Command. 1
Command::getProcessedHelp public function Returns the processed help for the command replacing the %command.name% and %command.full_name% patterns with the real values dynamically.
Command::getSynopsis public function Returns the synopsis for the command.
Command::getUsages public function Returns alternative usages of the command.
Command::ignoreValidationErrors public function Ignores validation errors.
Command::initialize protected function Initializes the command just after the input has been validated.
Command::interact protected function Interacts with the user. 2
Command::isEnabled public function Checks whether the command is enabled or not in the current environment.
Command::mergeApplicationDefinition public function Merges the application definition with the command definition.
Command::run public function Runs the command.
Command::setAliases public function Sets the aliases for the command.
Command::setApplication public function Sets the application instance for this command.
Command::setCode public function Sets the code to execute when running this command.
Command::setDefinition public function Sets an array of argument and option instances.
Command::setDescription public function Sets the description for the command.
Command::setHelp public function Sets the help for the command.
Command::setHelperSet public function Sets the helper set.
Command::setName public function Sets the name of the command.
Command::setProcessTitle public function Sets the process title of the command.
Command::validateName private function Validates a command name.
GenerateProxyClassCommand::$proxyBuilder protected property The proxy builder.
GenerateProxyClassCommand::configure protected function Configures the current command. Overrides Command::configure
GenerateProxyClassCommand::execute protected function Executes the current command. Overrides Command::execute
GenerateProxyClassCommand::__construct public function Constructs a new GenerateProxyClassCommand instance. Overrides Command::__construct