Composer und Symfony Flex vertieft
Composer und Symfony Flex vertieft
~12 Min. Lesezeit Zuletzt aktualisiert am 8. August 2026
Zum Abschluss von Block 1 verstehen wir, WIE Symfony-Pakete installiert werden – besonders Symfony Flex, das Composer-Plugin, das die "magische" automatische Konfiguration hinter composer require steuert.
composer require im Detail
composer require symfony/mailerEin einfacher Composer-Befehl, aber mit Symfony Flex passiert dabei MEHR als bei einer normalen PHP-Bibliothek: Flex erkennt, dass symfony/mailer ein bekanntes Symfony-Paket ist, und wendet automatisch eine dazugehörige "Recipe" an.
Was ist eine Recipe?
Eine Recipe ist eine kleine Anleitung, die im öffentlichen symfony/recipes-Repository gepflegt wird und automatisch:
- Standard-Konfigurationsdateien unter
config/packages/anlegt. - Nötige Umgebungsvariablen zu
.envhinzufügt. - Bei Bedarf neue Verzeichnisse erstellt.
Nach composer require symfony/mailer finden Sie automatisch eine neue config/packages/mailer.yaml UND eine neue MAILER_DSN-Zeile in .env – OHNE dass Sie das manuell angelegt hätten.
Nachvollziehen, was Flex verändert hat
cat symfony.lock | grep -A2 "symfony/mailer"symfony.lock (analog zu composer.lock, aber Flex-spezifisch) protokolliert, WELCHE Recipe-Version für JEDES Paket angewendet wurde – nützlich, um später nachzuvollziehen, was bei einer Installation automatisch generiert wurde.
Recipes, die wir im Laufe dieser Schulung nutzen
| Paket | Was die Recipe automatisch einrichtet |
|---|---|
| symfony/orm-pack | Richtet Doctrine ORM ein (Block 4): config/packages/doctrine.yaml, DATABASE_URL in .env. |
| symfony/security-bundle | Richtet Security ein (Block 5): config/packages/security.yaml. |
| symfony/mailer | Richtet den Mailer ein (Kapitel 38): config/packages/mailer.yaml, MAILER_DSN in .env. |
| symfony/test-pack | Richtet PHPUnit für Tests ein (Block 7): phpunit.dist.xml, tests/bootstrap.php. |
composer.json verstehen
{
"require": {
"php": ">=8.2",
"symfony/framework-bundle": "7.2.*",
"symfony/twig-bundle": "7.2.*"
},
"require-dev": {
"symfony/maker-bundle": "^1.60"
}
}7.2.* ist Symfonys empfohlenes Versionsformat: erlaubt PATCH-Updates (7.2.1, 7.2.2, ...) automatisch, verhindert aber ungewollte Sprünge auf 7.3, die Breaking Changes enthalten könnten.
symfony/maker-bundle: Code-Generatoren
Bereits im require-dev-Block enthalten – dieses Bundle stellt bin/console make:...-Befehle bereit, die uns ab Block 2 wiederholt begegnen werden (make:controller, make:entity, make:form, ...):
php bin/console list make
# zeigt alle verfügbaren make:-BefehleTipp: --no-dev installiert Pakete OHNE die require-dev-Abhängigkeiten – GENAU das nutzen wir in Kapitel 48 für produktionsreife Deployments, da maker-bundle & Co. dort nicht gebraucht werden und nur unnötig Speicherplatz und potenzielle Angriffsfläche hinzufügen würden.
Damit ist Block 1 (Grundlagen & erstes Projekt) abgeschlossen! Block 2 widmet sich Routing und Controllern – dem Kern, der aus einer HTTP-Anfrage tatsächlich Code werden lässt.