Erstes Symfony-Projekt erstellen
Erstes Symfony-Projekt erstellen
~13 Min. Lesezeit Zuletzt aktualisiert am 8. August 2026
Jetzt legen wir das eigentliche Projekt an – mit der webapp-Vorlage, die bereits Twig, Doctrine, Security und weitere für unseren Aufgaben-Manager benötigte Bundles vorinstalliert.
Projekt erstellen
symfony new aufgaben-manager --version="7.2.*" --webapp
cd aufgaben-manager--webapp installiert das "webapp"-Skeleton (inklusive Twig, Doctrine, Security, Mailer, Forms) statt des minimalen "microservice"-Skeletons – für eine klassische Webanwendung wie unseren Aufgaben-Manager genau richtig. Alternativ ohne Symfony CLI direkt über Composer:
composer create-project symfony/skeleton:"7.2.*" aufgaben-manager
cd aufgaben-manager
composer require webappDie Projektstruktur im Überblick
Symfony-Projektstruktur direkt nach der Installation
aufgaben-manager/ ├── bin/ │ └── console ├── config/ │ ├── packages/ │ ├── routes.yaml │ └── services.yaml ├── migrations/ ├── public/ │ └── index.php ├── src/ │ ├── Controller/ │ ├── Entity/ │ ├── Repository/ │ └── Kernel.php ├── templates/ ├── tests/ ├── var/ │ ├── cache/ │ └── log/ ├── vendor/ ├── .env └── composer.json
bin/console– Symfonys Kommandozeilen-Werkzeug INNERHALB des Projekts (Cache leeren, Migrationen ausführen, eigene Commands – ab Kapitel 39).config/– ALLE Konfiguration: Bundles, Routen, Services (Kapitel 4).public/index.php– der EINZIGE öffentlich erreichbare Einstiegspunkt, der Kernel wird für JEDE Anfrage neu gebootet.src/– Ihr eigener Anwendungscode: Controller, Entity-Klassen, Services.templates/– Twig-Templates (Kapitel 13).var/cache/undvar/log/– generierte Dateien, NIEMALS versionieren.vendor/– von Composer verwaltete Abhängigkeiten, NIEMALS versionieren.
Den Entwicklungsserver starten
symfony server:start -d
# -d = im Hintergrund (daemon)Öffnen Sie https://localhost:8000 – Symfonys "Welcome Page" bestätigt, dass die Installation funktioniert. Die Symfony-CLI richtet dabei automatisch ein lokales, selbstsigniertes HTTPS-Zertifikat ein.
bin/console kennenlernen
Ein zentrales Werkzeug, das uns durch die GESAMTE Schulung begleitet – rufen Sie es ohne Argumente auf, um ALLE verfügbaren Befehle zu sehen:
php bin/console
# oder kürzer, wenn die Symfony CLI installiert ist:
symfony consolephp bin/console about
# zeigt Projekt-Umgebung, PHP-Version, installierte BundlesTipp: php bin/console list zeigt eine vollständige, nach Namespace gruppierte Übersicht ALLER verfügbaren Commands – ein guter erster Anlaufpunkt, wenn Sie später einen bestimmten Befehl suchen, dessen genauen Namen Sie vergessen haben.
Ein allererster, minimaler Controller
Bevor wir in Kapitel 7 Routing systematisch behandeln, ein winziger Vorgeschmack, dass die Installation WIRKLICH funktioniert:
<?php
declare(strict_types=1);
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class WillkommenController extends AbstractController
{
#[Route('/willkommen', name: 'willkommen')]
public function index(): Response
{
return new Response('Aufgaben-Manager läuft!');
}
}Öffnen Sie https://localhost:8000/willkommen – erscheint der Text, funktioniert Ihre Installation vollständig. #[Route(...)] ist ein PHP-Attribut (KEIN Kommentar!) – Symfony liest es zur Laufzeit aus, um zu wissen, welche URL zu welcher Methode gehört. Kapitel 7 erklärt das im Detail.