Drupal e Symfony
Dalla versione 8 (2015) Drupal si basa profondamente su componenti Symfony: HttpKernel, EventDispatcher, DependencyInjection, Routing, HttpFoundation, Console, Yaml, Serializer. Capire la relazione tra i due framework aiuta a scrivere codice Drupal moderno e a riusare conoscenze tra progetti Symfony e Drupal.
Componenti Symfony in Drupal
- HttpKernel: gestisce il ciclo di richiesta/risposta
- HttpFoundation: oggetti Request e Response
- Routing: dispatch URL a controller
- DependencyInjection: container di servizi
- EventDispatcher: pattern observer per estendere il flusso
- Yaml: parser YAML usato per config/services/routing
- Console: usato da Drupal Console e Drush
- Serializer: JSON, XML per REST/JSON:API
Cosa Drupal aggiunge
Symfony e' un framework agnostico; Drupal e' un CMS prodotto su Symfony. Drupal aggiunge:
- Entity API e Field API (sistema entità generico)
- Plugin API e Annotation-based discovery
- Configuration management (config export/import)
- Cache API multilivello con cache tags/contexts
- Render API con lazy builders e bubbling metadata
- Theme system (Twig + suggestions hierarchy)
- UI admin e content management
Routing comparato
Symfony usa attribute/annotation o YAML:
#[Route('/hello', name: 'hello')]
public function hello() { ... }Drupal usa solo YAML (no attribute al momento):
hello:
path: '/hello'
defaults:
_controller: '...::hello'
requirements:
_permission: 'access content'Container e service
Drupal espone il container Symfony con servizi tipo entity_type.manager, config.factory, current_user. Si registrano custom in mymodule.services.yml identicamente a Symfony.
Versioni Symfony
- Drupal 9: Symfony 4 (poi 5)
- Drupal 10: Symfony 6.x
- Drupal 11: Symfony 7.x
L'allineamento alle versioni Symfony LTS guida la roadmap Drupal.
Cosa NON e' Symfony
Drupal NON usa Doctrine ORM (ha la sua Entity API/storage), NON usa Twig in modo identico (ha render API con metadata), NON ha la stessa filosofia di MVC stretta. Un sviluppatore Symfony pure troverà Drupal più "opinionato" e meno flessibile in alcuni aspetti core.
Skill transferibili
Conoscenze direttamente trasferibili:
- DI e container
- Event subscriber
- Form types (parzialmente)
- Console commands (Drush usa Symfony Console)
- Serializer e REST
Conclusione
Drupal e' un CMS completo costruito su solidissime fondamenta Symfony. La sinergia produce un prodotto stabile, ben architettato e con un'enorme community condivisa con l'ecosistema PHP moderno.
Hai bisogno di aiuto?
Se vuoi un sito Drupal performante dal team di G Tech Group, scrivici tramite il modulo di contatto.