llenon / smart-alias-bundle
A Symfony bundle that automatically registers service aliases and tags using attributes.
Installs: 7
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=8.1
- symfony/config: ^7.2
- symfony/dependency-injection: ^6.0 || ^7.0
- symfony/finder: ^6.0 || ^7.0
- symfony/http-kernel: ^6.0 || ^7.0
README
Gere automaticamente aliases de serviços em tempo de execução com base em atributos no Symfony. Suporte a singleton e array de serviços, com cache em produção.
⚙️ Instalação
composer require llenon/smart-alias-bundle
Se necessário, adicione o bundle manualmente:
// config/bundles.php return [ Llenon\SmartAlias\SmartAliasBundle::class => ['all' => true], ];
✨ Como usar
#[SmartAlias]
– singleton obrigatório
Use quando apenas uma implementação da interface deve ser registrada. Duplicidades lançarão exceção.
use Llenon\SmartAlias\Attributes\SmartAlias; #[SmartAlias(ReportProcessorInterface::class)] class ReportProcessorA implements ReportProcessorInterface { public function process(): void { // ... } }
No seu serviço:
class ReportHandler { public function __construct(private ReportProcessorInterface $processor) { $this->processor->process(); } }
#[SmartAliasMultiple]
– array de serviços
Use quando quiser injeção múltipla:
use Llenon\SmartAlias\Attributes\SmartAliasMultiple; #[SmartAliasMultiple(ReportProcessorInterface::class)] class ReportProcessorA implements ReportProcessorInterface {} #[SmartAliasMultiple(ReportProcessorInterface::class)] class ReportProcessorB implements ReportProcessorInterface {}
Injetando múltiplos serviços:
class ReportAggregator { public function __construct( /** @var ReportProcessorInterface[] */ private iterable $processors ) { } }
🧪 Testes
composer test
🔁 Cache & Modo Dev
- Em produção, os aliases são cacheados para performance.
- Em modo dev, os aliases são atualizados automaticamente em cada requisição.
- Limpe o cache com:
bin/console cache:clear
🧩 Contribuindo
- Fork o repositório
- Crie sua branch (
git checkout -b feature/MinhaFeature
) - Commit suas alterações (
git commit -am 'add: nova funcionalidade'
) - Push na sua branch (
git push origin feature/MinhaFeature
) - Abra um Pull Request
📝 Licença
MIT © lucyannlenon