Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 40 |
| GenerateProxyClassCommand | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
20 | |
0.00% |
0 / 40 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| configure | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 10 |
|||
| execute | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 27 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\Core\Command\GenerateProxyClassCommand. | |
| */ | |
| namespace Drupal\Core\Command; | |
| use Drupal\Component\ProxyBuilder\ProxyBuilder; | |
| use Symfony\Component\Console\Command\Command; | |
| use Symfony\Component\Console\Input\InputArgument; | |
| use Symfony\Component\Console\Input\InputInterface; | |
| use Symfony\Component\Console\Output\OutputInterface; | |
| /** | |
| * Provides a console command to generate proxy classes. | |
| */ | |
| 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 '$class_name' "$namespace_root". | |
| */ | |
| {{ 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)); | |
| } | |
| } | |
| } |