class GenerateProxyClassCommand
Provides a console command to generate proxy classes.
Hierarchy
- class \Symfony\Component\Console\Command\Command
- class \Drupal\Core\Command\GenerateProxyClassCommand extends \Symfony\Component\Console\Command\Command
Expanded class hierarchy of GenerateProxyClassCommand
See also
core/scripts/generate-proxy.sh
File
-
core/
lib/ Drupal/ Core/ Command/ GenerateProxyClassCommand.php, line 17
Namespace
Drupal\Core\CommandView 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\\my_module\\MyClass\' "modules/contrib/my_module/src"');
}
/**
* {@inheritdoc}
*/
protected function execute(InputInterface $input, OutputInterface $output) : int {
$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;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
Command::$aliases | private | property | 1 | ||
Command::$application | private | property | |||
Command::$code | private | property | |||
Command::$definition | private | property | |||
Command::$description | private | property | 1 | ||
Command::$fullDefinition | private | property | |||
Command::$help | private | property | |||
Command::$helperSet | private | property | |||
Command::$hidden | private | property | |||
Command::$ignoreValidationErrors | private | property | 2 | ||
Command::$name | private | property | |||
Command::$processTitle | private | property | |||
Command::$synopsis | private | property | |||
Command::$usages | private | property | |||
Command::addArgument | public | function | Adds an argument. | 2 | |
Command::addOption | public | function | Adds an option. | 2 | |
Command::addUsage | public | function | Add a command usage example, it'll be prefixed with the command name. | 2 | |
Command::complete | public | function | Supplies suggestions when resolving possible completion options for input (e.g. option or argument). | 5 | |
Command::FAILURE | public | constant | |||
Command::getAliases | public | function | Returns the aliases for the command. | ||
Command::getApplication | public | function | Gets the application instance for this command. | 2 | |
Command::getDefaultDescription | public static | function | |||
Command::getDefaultName | public static | function | |||
Command::getDefinition | public | function | Gets the InputDefinition attached to this Command. | 2 | |
Command::getDescription | public | function | Returns the description for the command. | ||
Command::getHelp | public | function | Returns the help for the command. | 2 | |
Command::getHelper | public | function | Gets a helper instance by name. | 2 | |
Command::getHelperSet | public | function | Gets the helper set. | 1 | |
Command::getName | public | function | Returns the command name. | ||
Command::getNativeDefinition | public | function | Gets the InputDefinition to be used to create representations of this Command. | 2 | |
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. |
2 | |
Command::getSynopsis | public | function | Returns the synopsis for the command. | 2 | |
Command::getUsages | public | function | Returns alternative usages of the command. | 2 | |
Command::ignoreValidationErrors | public | function | Ignores validation errors. | 2 | |
Command::initialize | protected | function | Initializes the command after the input has been bound and before the input is validated. |
4 | |
Command::interact | protected | function | Interacts with the user. | 5 | |
Command::INVALID | public | constant | |||
Command::isEnabled | public | function | Checks whether the command is enabled or not in the current environment. | 2 | |
Command::isHidden | public | function | |||
Command::mergeApplicationDefinition | public | function | Merges the application definition with the command definition. | 2 | |
Command::run | public | function | Runs the command. | 4 | |
Command::setAliases | public | function | Sets the aliases for the command. | ||
Command::setApplication | public | function | 2 | ||
Command::setCode | public | function | Sets the code to execute when running this command. | 2 | |
Command::setDefinition | public | function | Sets an array of argument and option instances. | 2 | |
Command::setDescription | public | function | Sets the description for the command. | ||
Command::setHelp | public | function | Sets the help for the command. | 2 | |
Command::setHelperSet | public | function | 2 | ||
Command::setHidden | public | function | |||
Command::setName | public | function | Sets the name of the command. | ||
Command::setProcessTitle | public | function | Sets the process title of the command. | 2 | |
Command::SUCCESS | public | constant | |||
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 |