Glossar: Symfony-Entwicklung
Im Artikel zum Dienstplaner verwende ich einige Fachbegriffe aus der Symfony-Welt. Hier findest du alle Begriffe kurz erklärt — so kannst du jederzeit nachschlagen, wenn dir etwas unklar ist.
Zahlen
Zwei-Faktor-Authentifizierung (2FA)
Eine zusätzliche Sicherheitsebene beim Login. Neben dem Passwort wird ein zweiter Faktor abgefragt — zum Beispiel ein Code aus einer Authenticator-App, ein per E-Mail zugeschickter Code oder ein Backup-Code. Selbst wenn jemand dein Passwort kennt, kommt er ohne den zweiten Faktor nicht rein.
A
AJAX
Steht für Asynchronous JavaScript and XML — eine Technik, mit der eine Webseite Daten vom Server nachladen kann, ohne die gesamte Seite neu zu laden. Im Dienstplaner wird AJAX genutzt, um Aufgabenzuweisungen direkt im Planungsraster zu speichern, ohne dass die Seite springt.
Attribute (PHP)
Seit PHP 8 gibt es Attribute als native Sprach-Funktion. Sie erlauben es, Metadaten direkt an Klassen, Methoden oder Eigenschaften zu schreiben — zum Beispiel #[ORM\Column] bei Doctrine. Früher brauchte man dafür DocBlock-Annotationen, die fehleranfälliger waren.
B
Bootstrap
Ein CSS-Framework, das fertige Komponenten für Buttons, Formulare, Tabellen, Navigation und responsive Layouts mitbringt. Bootstrap spart viel Frontend-Arbeit, weil du nicht jedes Element von Grund auf stylen musst. Der Dienstplaner nutzt Bootstrap 5 für das gesamte Interface.
C
Controller
Die Eingangstür deiner Symfony-Anwendung. Ein Controller empfängt eine HTTP-Anfrage (zum Beispiel „zeige mir den Plan für März“), ruft die passende Geschäftslogik auf und gibt eine Antwort zurück — meistens eine gerenderte HTML-Seite. Controller sollten möglichst schlank sein und die eigentliche Arbeit an Services delegieren.
D
Doctrine ORM
Ein Object-Relational Mapper für PHP. Doctrine übersetzt zwischen PHP-Objekten und Datenbanktabellen — du arbeitest mit normalen PHP-Klassen, und Doctrine kümmert sich um SQL-Queries, Joins und Transaktionen im Hintergrund. Das macht den Code lesbarer und sicherer, weil du kein SQL von Hand schreiben musst.
dompdf
Eine PHP-Bibliothek, die HTML in PDF umwandelt. Du schreibst ein Twig-Template mit dem gewünschten Layout, übergibst es an dompdf, und bekommst eine fertige PDF-Datei zurück. Im Dienstplaner wird dompdf genutzt, um Monatspläne als druckfertige DIN-A4-Dokumente zu erzeugen.
E
Entity
Eine PHP-Klasse, die eine Datenbanktabelle abbildet. Jede Entity hat Eigenschaften (die den Spalten entsprechen) und Beziehungen zu anderen Entities. Im Dienstplaner ist zum Beispiel Person eine Entity mit Name, Aufgaben und Abwesenheiten. Doctrine liest die Entity-Definition und erstellt die Datenbanktabelle automatisch.
F
FullCalendar
Eine JavaScript-Bibliothek, die interaktive Kalenderansichten im Browser erzeugt. FullCalendar zeigt Monats-, Wochen- und Tagesansichten, lässt sich mit eigenen Datenquellen füttern und reagiert auf Klicks und Drag-and-Drop. Im Dienstplaner stellt FullCalendar die persönlichen und öffentlichen Kalender dar.
I
ICS-Datei
Ein standardisiertes Dateiformat für Kalendereinträge (iCalendar, RFC 5545). ICS-Dateien lassen sich in praktisch jeden Kalender importieren — Google Calendar, Outlook, Apple Kalender. Der Dienstplaner generiert ICS-Dateien mit den eigenen Einsätzen, die als E-Mail-Anhang verschickt oder über einen Link abonniert werden können.
M
MariaDB
Eine Open-Source-Datenbank, die vollständig kompatibel mit MySQL ist. MariaDB bietet gute Performance bei niedrigem Ressourcenverbrauch und wird von Doctrine ORM nativ unterstützt. Im Dienstplaner speichert MariaDB alle Personen, Aufgaben, Zuweisungen und Konfigurationsdaten.
P
PHPStan
Ein statisches Analyse-Tool für PHP, das Fehler findet, ohne den Code auszuführen. PHPStan erkennt Typfehler, fehlende Methoden, falsche Parameter und andere Probleme bereits während der Entwicklung. Spart Zeit, weil Bugs nicht erst beim Testen auffallen.
PHP CS Fixer
Ein Tool, das PHP-Code automatisch nach definierten Standards formatiert. PHP CS Fixer sorgt für einheitliche Einrückungen, Leerzeichen und Klammerstile im gesamten Projekt. Besonders nützlich, wenn der Code über längere Zeit wächst und konsistent bleiben soll.
PhpSpreadsheet
Eine PHP-Bibliothek zum Erzeugen und Lesen von Excel-Dateien. PhpSpreadsheet unterstützt Formatierung, Formeln, mehrere Tabellenblätter und verschiedene Dateiformate. Im Dienstplaner erzeugt PhpSpreadsheet den tabellarischen Export der Monatspläne im XLSX-Format.
PhpWord
Eine PHP-Bibliothek zum Erzeugen von Word-Dokumenten im DOCX-Format. PhpWord erlaubt es, Absätze, Tabellen, Überschriften und Formatierungen programmatisch zu erstellen. Der Dienstplaner nutzt PhpWord, um Pläne als bearbeitbare Word-Dateien zu exportieren.
R
Repository (Doctrine)
Eine Klasse, die für den Datenbankzugriff einer bestimmten Entity zuständig ist. Statt SQL direkt zu schreiben, fragst du das Repository: „Gib mir alle Personen der Abteilung X“ oder „Finde den Tag mit diesem Datum.“ Repositories kapseln die Datenbanklogik und halten den Rest des Codes sauber.
S
Service
Eine PHP-Klasse, die eine bestimmte Aufgabe der Geschäftslogik übernimmt. In Symfony werden Services automatisch über den Service Container verwaltet und können in andere Klassen injiziert werden. Der Dienstplaner hat 24 Services — vom AssignmentService für Zuweisungen bis zum ExportService für die Datei-Erzeugung.
Service Container
Das Herzstück von Symfony. Der Service Container verwaltet alle Services der Anwendung und löst ihre Abhängigkeiten automatisch auf. Wenn ein Controller einen Service braucht, muss er ihn nicht selbst erstellen — der Container liefert die fertig konfigurierte Instanz. Das nennt sich Dependency Injection und macht den Code testbar und flexibel.
Symfony
Ein PHP-Framework für Web-Anwendungen, das auf wiederverwendbaren Komponenten aufbaut. Symfony gibt eine klare Projektstruktur vor und bringt Lösungen für Routing, Formulare, Sicherheit, Datenbankzugriff und vieles mehr mit. Es ist eines der am weitesten verbreiteten PHP-Frameworks und bildet auch die Basis anderer Projekte wie Laravel oder Drupal.
T
Twig
Die Standard-Template-Engine von Symfony. Twig erzeugt HTML aus Vorlagen, die Platzhalter, Schleifen und Bedingungen enthalten. Die Syntax ist bewusst einfach gehalten: {{ variable }} gibt einen Wert aus, {% if %} prüft eine Bedingung. Twig escaped alle Ausgaben automatisch, was Cross-Site-Scripting verhindert.
V
Voter (Security)
Ein Symfony-Mechanismus zur feingranularen Berechtigungsprüfung. Statt nur zu prüfen, ob jemand eingeloggt ist, kann ein Voter entscheiden, ob ein bestimmter Nutzer eine bestimmte Aktion auf einem bestimmten Objekt ausführen darf. Im Dienstplaner prüft der Voter zum Beispiel, ob ein Planer die angefragte Abteilung überhaupt bearbeiten darf.