
| Current Path : /var/www/html/vendor/consolidation/annotated-command/src/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : /var/www/html/vendor/consolidation/annotated-command/src/ParameterInjection.php |
<?php
namespace Consolidation\AnnotatedCommand;
/**
* Prepare parameter list for execurion. Handle injection of any
* special values (e.g. $input and $output) into the parameter list.
*/
class ParameterInjection implements ParameterInjector
{
protected $injectors = [];
public function __construct()
{
$this->register('Symfony\Component\Console\Input\InputInterface', $this);
$this->register('Symfony\Component\Console\Output\OutputInterface', $this);
}
public function register($interfaceName, ParameterInjector $injector)
{
$this->injectors[$interfaceName] = $injector;
}
public function args($commandData)
{
return array_merge(
$commandData->injectedInstances(),
$commandData->getArgsAndOptions()
);
}
public function injectIntoCommandData($commandData, $injectedClasses)
{
foreach ($injectedClasses as $injectedClass) {
$injectedInstance = $this->getInstanceToInject($commandData, $injectedClass);
$commandData->injectInstance($injectedInstance);
}
}
protected function getInstanceToInject(CommandData $commandData, $interfaceName)
{
if (!isset($this->injectors[$interfaceName])) {
return null;
}
return $this->injectors[$interfaceName]->get($commandData, $interfaceName);
}
public function get(CommandData $commandData, $interfaceName)
{
switch ($interfaceName) {
case 'Symfony\Component\Console\Input\InputInterface':
return $commandData->input();
case 'Symfony\Component\Console\Output\OutputInterface':
return $commandData->output();
}
return null;
}
}