Architecture
Modules, Shared Modules, private Modules und optionale Projects.
BUILD • CONNECT • EXTEND
Nexum ergänzt Symfony um eine modulare Architektur. Modules bündeln fachlich zusammengehörigen Code. Projects gruppieren Anwendungsbereiche.

ERSTE SCHRITTE
Nach der einmaligen Integration entsteht Architektur durch PHP-Descriptoren und nachvollziehbare Verzeichnisse.
Flex-StatusBis zur Veröffentlichung der Recipe werden Bundle, Grundkonfiguration und Routenimport einmalig ergänzt. Danach übernimmt Flex diesen Teil automatisch.
Das einzelne Nexum-Package in eine Symfony-7.4-Anwendung einbinden.
composer require benjaminoeffinger/nexum
Eine normale PHP-Klasse mit dem Attribut NexumModule beschreibt den fachlichen Bereich.
#[NexumModule] final class BlogModule
Nexum findet Descriptor, Services, Controller und Entities beim Container-Build.
src/Module/Blog/
Autowiring, Commands, Events und Messenger funktionieren weiterhin wie gewohnt.
final class BlogService
Den kompilierten Module- und Project-Graph read-only kontrollieren.
php bin/console nexum:architecture
DAS MODELL
Nexum beginnt nicht bei einer API, sondern bei der Organisation deiner Symfony-Anwendung.
Modules, Shared Modules, private Modules und optionale Projects.
Entity, Doctrine, Security, HTTP, Messenger und weitere Bausteine.
Bewusst aktivierbare REST-, Management- und Security-Oberflächen.
Direkt nutzbar, frei kombinierbar. Reine Komponenten und Basisklassen können ohne Project-Kontext verwendet werden. Eigene Symfony-Lösungen und Provider-Adapter bleiben ausdrücklich möglich.
MODUL-ANATOMIE
Das Blog-Modul zeigt, wie zusammengehörender Code übersichtlich gebündelt wird.

Behandelt Requests und gibt Responses zurück.
Deine Domain-Modelle, z. B. für Blog-Posts.
Datenzugriff mit eigenen Abfragen und Logik.
Geschäftslogik, wiederverwendbar und testbar.
Eigene Endpunkte, z. B. für eine API-Version des Moduls.
Rechte und Zugriffslogik, z. B. Voter.
Konsolenbefehle mit normaler Symfony-Autoconfiguration.
OPTIONALE PROJECTS
Projects gruppieren Shared Modules und private Funktionen zu hostbasierten Oberflächen. Ohne Project-Descriptor bleibt Nexum bewusst im einfachen Application Mode.
Shared User, Media oder Payment wiederverwenden.
Privat Checkout oder Dashboard nur einem Project zuordnen.
Multi-Domain Storefront, Admin und API über eindeutige Hosts auflösen.
User
Media
Payment
Storefrontshop.example.de · Checkout
Adminadmin.example.de · Dashboard
APIapi.example.de
#[NexumProject(
modules: [UserModule::class, MediaModule::class],
)]
final class StorefrontProject {}Projects trennen Routen und Oberflächen, nicht automatisch Daten oder Mandanten.
SYMFONY BLEIBT SYMFONY
Nexum ergänzt, statt zu ersetzen. Die bekannten Symfony-Werkzeuge funktionieren weiterhin wie gewohnt.
Attribute, YAML oder PHP – wie gewohnt.
Services, Autowiring, Compiler-Passes.
Entities, Migrations, Repositories.
Templates und Template-Logik.
Firewall, Voter, Access Control.
Eigene Console Commands.
Formulare und Validierung.
Events und Event Subscriber.