📋 Commit iniziale con: - ✅ Documentazione unificata in docs/ - ✅ Codice Laravel in netgescon-laravel/ - ✅ Script automazione in scripts/ - ✅ Configurazione sync rsync - ✅ Struttura organizzata e pulita 🔄 Versione: 2025.07.19-1644 🎯 Sistema pronto per Git distribuito
76 lines
1.8 KiB
PHP
76 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace Illuminate\Console;
|
|
|
|
use Psr\Container\ContainerInterface;
|
|
use Symfony\Component\Console\Command\Command;
|
|
use Symfony\Component\Console\CommandLoader\CommandLoaderInterface;
|
|
use Symfony\Component\Console\Exception\CommandNotFoundException;
|
|
|
|
class ContainerCommandLoader implements CommandLoaderInterface
|
|
{
|
|
/**
|
|
* The container instance.
|
|
*
|
|
* @var \Psr\Container\ContainerInterface
|
|
*/
|
|
protected $container;
|
|
|
|
/**
|
|
* A map of command names to classes.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $commandMap;
|
|
|
|
/**
|
|
* Create a new command loader instance.
|
|
*
|
|
* @param \Psr\Container\ContainerInterface $container
|
|
* @param array $commandMap
|
|
*/
|
|
public function __construct(ContainerInterface $container, array $commandMap)
|
|
{
|
|
$this->container = $container;
|
|
$this->commandMap = $commandMap;
|
|
}
|
|
|
|
/**
|
|
* Resolve a command from the container.
|
|
*
|
|
* @param string $name
|
|
* @return \Symfony\Component\Console\Command\Command
|
|
*
|
|
* @throws \Symfony\Component\Console\Exception\CommandNotFoundException
|
|
*/
|
|
public function get(string $name): Command
|
|
{
|
|
if (! $this->has($name)) {
|
|
throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name));
|
|
}
|
|
|
|
return $this->container->get($this->commandMap[$name]);
|
|
}
|
|
|
|
/**
|
|
* Determines if a command exists.
|
|
*
|
|
* @param string $name
|
|
* @return bool
|
|
*/
|
|
public function has(string $name): bool
|
|
{
|
|
return $name && isset($this->commandMap[$name]);
|
|
}
|
|
|
|
/**
|
|
* Get the command names.
|
|
*
|
|
* @return string[]
|
|
*/
|
|
public function getNames(): array
|
|
{
|
|
return array_keys($this->commandMap);
|
|
}
|
|
}
|