Magento 2 Experten — Hyvä Theme, Tailwind CSS & SEO aus einer Hand ›

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 webapp

Die 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/ und var/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 console
php bin/console about
# zeigt Projekt-Umgebung, PHP-Version, installierte Bundles

Tipp: 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:

src/Controller/WillkommenController.php
<?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.