- Symfony Schulung: Auch fortgeschrittene Themen wie nachhaltige Architektur, Patterns, Doctrine, Twig, PHPUnit, Dependency Injection, Security und Performance Optimierung können Teil der Agenda sein, wenn Sie Ihre Symfony Schulung inhouse buchen.
- Wenn Sie sich vorab optimal auf Ihre Symfony Schulung vorbereiten möchten, empfehlen wir Ihnen "The Book", d.h. den Kern der englischsprachigen Dokumentation, zu lesen.
- Wir weisen darauf hin, dass alle verwendeten Markennamen der jeweiligen Firmen, Einrichtungen oder Personen dem allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen. Dies gilt insbesondere auch für die Wort- und Bildmarke „Symfony“ von Fabien Potencier.
Einführung
Grundlagen und erste Schritte
Themen
- Warum wollen wir ein Framework verwenden?
- Symfony?
- Symfony Grundlagen
- Framework
- Bundle
- Vendor Bundle
- Applikation
- Service
- Service Container
- Controller
- Front Controller
- Routing
- Erste Schritte mit Symfony
- Applikation und Bundle generieren
- Controller erstellen und Route festlegen
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… erklären wie Frameworks Software-Entwicklung und Teamwork erleichtern können.
… Vorzüge des Symfony Frameworks aufzählen.
… beschreiben welche Aufgaben Bundles im Kontext einer Applikation erfüllen.
… Bundles erzeugen.
… die interne Struktur von Bundles erklären.
… konzeptuell beschreiben was Services sind und was der Service Container leistet.
… den grundlegenden Aufbau einer Symfony Applikation beschreiben und die Aufgaben aller Bestandeile benennen.
Software Architektur
Objekt Orientierte Programmierung (OOP)
Themen
- Motivation
- Warum wollen wir überhaupt objektorientiert programmieren?
- Was kann OOP leisten und was nicht?
- Grundlagen der Objektorientierung
- Kennzeichen der Paradigmen: Imperativ, prozedural, objektorientiert
- Klassen versus Objekte
- Konstruktoren und Destruktoren
- Eigenschaften und Methoden
- Objektorientierung für Fortgeschrittene
- Vererbung, Sichtbarkeit, Polymorphie
- Vertikale Vererbung mit Extends
- Horizontale Vererbung mit Traits
- Interfaces und abstrakte Klassen
- Type Hints und Type Annotations
- Namespaces, Autoloader, PSR-0, PSR-4
- Vererbung, Sichtbarkeit, Polymorphie
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… erklären in welchen Fällen es sinnvoll ist objektorientiert zu programmieren.
… die entscheidenden Effekte der vertikalen Vererbung mit Extends und der horizontalen Vererbung mit Traits aufzählen.
… Polymorphie unter Berücksichtigung von Type Hints und Interfaces erklären.
… eigene Klassenhierarchien entwerfen.
… die Aufgaben von Interfaces und abstrakten Klassen kontrastieren.
… Interfaces und abstrakte Klassen beim Entwurf eigener Klassenhierarchien angemessen berücksichtigen.
… Klassen PSR-0 und PSR-4 konform in eigenen Namespaces implementieren.
Das Model View Controller (MVC) Design Pattern
Themen
- In welchen Fällen ist das MVC Pattern nützlich?
- Definition, Grundlagen und praktische Vorzüge des MVC Patterns
- Front Controller und Routing
- Aufbau von Controller Klassen und Actions im Kontext von Symfony
- Saubere Abgrenzung der Aufgaben jeder einzelnen Schicht (Model, View und Controller)
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… entscheiden in welchen Fällen es sinnvoll ist das MVC Pattern anzuwenden.
… den Aufbau einer MVC Architektur erklären.
… Controller implementieren.
… entscheiden welcher Code jeweils in welche Schicht (Model, View und Controller) gehört.
Das Service Orientierte Architektur (SOA) Pattern
Themen
- Grundlagen, Definitionen, Vorzüge der SOA
- Protokolle für Webservices
- REST API
- SOAP API
- sonstige HTTP-APIs
- Bibliotheken und Strategien
- Implementierung von Webservices
- Orchestrierung von Webservices
- Applikationen intern mittels SOA strukturieren
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… die entscheidenden Merkmale der SOA aufzählen.
… die Vor- und Nachteile von REST, SOAP und sonstigen Webservices beschreiben.
… erklären, wie man komplexe Applikationen intern im Sinne der SOA strukturiert.
… Webservices implementieren.
… Bibliotheken und Strategien zur Orchestrierung von REST und SOAP Webservices aufzählen.
Das Dependency Injection (DI) Design Pattern
Themen
- In welchen Fällen ist es sinnvoll das DI Pattern anzuwenden?
- Typische Probleme durch versteckte Abhängigkeiten zwischen Klassen
- Versteckte Abhängigkeiten zwischen Klassen erkennen und vermeiden
- Auswirkungen von fester Kopplung und loser Kopplung zwischen Klassen
- Feste Kopplung mit Dependency Injection lösen
- Im Kontext von Symfony:
- Model Klassen als Services bereitstellen
- Services per DI Pattern lose koppeln
- Verhalten von Services per Konfiguration flexibel steuern
- Effektive Kombination von DI Pattern und MVC Pattern
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… mögliche Schwierigkeiten durch versteckte Abhängigkeiten in Klassen erkennen.
… entscheiden für welche Klassen die Anwendung des DI Patterns sinnvoll ist.
… eigene Klassen als Services bereitstellen.
… Services aus mehreren Klassen aufbauen.
… Abhängigkeiten von Klassen mit Hilfe des Dependency Injection Patterns erfüllen.
… Argumente für Service Klassen konfigurieren.
… eine separate Service Konfiguration für funktionale Tests nutzen.
… Services in eigenen Controllern verwenden.
… DI und das MVC Pattern effektiv kombinieren.
Templates und Internationalisierung
Twig: Die moderne und performante Template Engine
Themen
- Warum wollen wir eine Template Engine verwenden?
- Twig Grundlagen
- Integration in PHP Projekte
- ohne Framework
- mit Symfony
- Struktur und Syntax für einfache Templates
- Zugriff auf Daten in Arrays und Objekten
- Filter zur variablen Ausgabe verwenden
- Kontrollstrukturen und Schleifen
- Blöcke und Variablen
- Vererbung von Templates
- Inklusion von Templates
- Integration in PHP Projekte
- Twig für Fortgeschrittene
- URLs flexibel verwalten und adressieren
- Twig erweitern mit Twig Makros, Extensions, PHP Klassen und Services
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… entscheiden in welchen Fällen die Verwendung einer Template Enginge sinnvoll ist.
… Twig in bestehende und neue PHP Projekte integrieren (mit und ohne Symfony).
… eigene Templates zur dynamischen Generierung von HTML, XML und JSON erstellen.
… auf Daten in Arrays und Objekten zugreifen.
… Filter zur Transformation und Ausgabe verwenden.
… mit Kontrollstrukturen, Schleifen und Funktionen in Templates dynamisch agieren.
… Templates in Blöcken strukturieren und vererben.
… statische und variable Seitenfragmente in Templates inkludieren.
… mit Hilfe der Routing Komponente URLs flexibel adressieren.
Internationalisierung und Lokalisierung
Themen
- Warum wollen wir eine Bibliothek für Internationalisierung (i18n) und Lokalisierung (L10n) verwenden?
- Integration der Symfony Translation Komponente (mit und ohne Framework, ggf. mit Twig)
- Internationalisierung (i18n)
- Ausgabe Strings Abstrahieren
- Translation Komponente konfigurieren
- Locale des aktuellen Requests ermitteln
- Lokalisierung (L10n)
- Übersetzungen bereitstellen
- Platzhalter in Messages
- Pluralisierung von Messages
- Für Fortgeschrittene
- Übersetzungen mit Custom Loader laden
- Übersetzten von Constraint Messages
- Automatisches Übersetzten von Datenbank Inhalten (z.B. für CMS)
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… die Symfony Translation Komponente integrieren (mit und ohne Framework, ggf. mit Twig).
… Ausgabe Strings von Web-Anwendungen (mit und ohne Framework) abstrahieren.
… 3 Möglichkeiten zur Ermittlung der aktuellen Request Locale nennen.
… Übersetzungen für verschiedene Locales (Sprachen) bereitstellen.
… Platzhalter und Pluralisierung verwenden.
… eigene Custom Loader zum Laden von Übersetzungen aus beliebigen Quellen implementieren.
… automatische Übersetzung von Constraint Messages implementieren.
… automatische Übersetzung von Datenbankinhalten implementieren.
Formulare und Validierung
Formulare effizient und sicher handhaben: Grundlagen
Themen
- Warum wollen wir Formulare mit Hilfe einer Bibliothek erzeugen und verarbeiten?
- Integration der Symfony Formular Komponente (mit und ohne Framework)
- Formulardaten handhaben als
- Array
- Objekt
- Doctrine Entity
- Formulare und CRUD-Controller erstellen
- Von Hand schreiben
- Generieren aus Klassen und Entities
- Generierte Formulare und CRUD-Controller an eigene Anforderungen anpassen
- Sichere Verarbeitung von Formulardaten
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… erklären welche Beträge zur Effizienz und Sicherheit eine Formular-Bibliothek leisten kann.
… die Symfony Formular-Komponente in Projekte integrieren (mit und ohne Framework).
… Formulare implementieren die Daten als Array, Objekt oder Doctrine Entity handhaben können.
… Formulare und CRUD-Controller ausgehend von Klassen oder Doctrine Entities generieren.
… Formulare und CRUD-Controller an eigene Anforderungen anpassen.
… Formulare mit Hilfe von Validierungsregeln und CSRF-Tokens vor Angriffen schützen.
Formulare effizient und sicher handhaben: Für Fortgeschrittene
Themen
- Welche Bibliotheken helfen Formulare effizient und sicher zu handhaben?
- Schnelles Prototyping von Formularen mit der Twig Template Engine
- Formulare visuell gestalten
- Formulare innerhalb von Templates individuell gestalten
- Formularfelder durch wiederverwendbare Template Fragmente gestalten
- Formulare dynamisch generieren, z.B. variable Auswahl von Elementen aus der Datenbank
- Validierung von Formulareingaben mit der Symfony Validator Komponente
- Internationalisierung von Formularen mit der Symfony Translation Komponente
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… die Symfony Komponenten Form, Validator, Twig, Translation integrieren (mit und ohne Framework)
… mit Twig schnell funktionsfähige Prototypen von Formularen erzeugen.
… Formulare innerhalb von Templates mit HTML und CSS Elementen gestalten.
… Formularfelder durch wiederverwendbare Template Fragmente mit HTML und CSS Elementen gestalten.
… Formulare dynamisch generieren, z.B. mit einer variable Auswahl von Elementen aus der Datenbank.
… Formulareingaben mit Hilfe der Symfony Validator Komponente validieren.
… Formulare und Formularfelder internationalisieren.
Validierung von Formularen und Objekten
Themen
- Warum wollen wir eine Bibliothek für Validierungsaufgaben verwenden?
- Integration der Symfony Validierungs-Komponente (mit und ohne Framework)
- Validierung in den Kontexten
- Browser
- Backend
- Datenbank
- Validierung von
- Formulareingaben
- Daten in Objekten aller Art
- Validierung mit Standard Constraints für
- Strings, Zahlen, Datum und Uhrzeit
- Collections, Dateien, Uploads
- Eigene Constraints implementieren als
- Callback (klein, inline)
- Klasse / Service (wiederverwendbar)
- Internationalisierung von Constraint Messages
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… erklären welche Beträge zur Effizienz und Sicherheit eine Validierungs-Bibliothek leisten kann.
… die Symfony Validierungs-Komponente integrieren (mit und ohne Framework).
… erklären wie man einen einzelnen Satz an Validierungsregeln zur Validierung in allen Kontexten (Browser, Backend, Datenbank) nutzen kann.
… Validierungsregeln so implementieren, dass sie für Formulareingaben und Objekte funktionieren.
… mit vorgefertigten Constraints fast alle Validierungsaufgaben lösen.
… Validierungen auf der Basis von selbst definierten Constraints implementieren (inline oder wiederverwendbar)
… Validierungsregeln gruppenweise anwenden.
… Constraint Messages internationalisieren.
Datenbanken
Datenbankzugriff mit Doctrine ORM: Grundlagen
Themen
- Warum wollen wir einen Object Relational Mapper (ORM) verwenden?
- Integration der Doctrine ORM Bibliothek in PHP Projekte (mit und ohne Framework)
- Konfiguration für MySQL, postgreSQL, MSSQL, sqlLite und Oracle Datenbanken
- Entities komfortabel generieren
- Mapping Informationen als Annotations, YML oder XML hinterlegen
- Syntax für Abfragen
- CRUD Controller für Entities generieren
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… erklären in welchen Fällen die Verwendung eines Object Relational Mappers sinnvoll ist.
… Doctrine ORM in bestehende und neue PHP Projekte integrieren (mit und ohne Framework).
… Entities generieren und Mapping definieren.
… Abfragen ausführen.
… Controller und Formulare für alle CRUD Aktionen (Create, Read, Update, Delete) automatisch auf der Basis von Entities generieren.
Datenbankzugriff mit Doctrine ORM: Für Fortgeschrittene
Themen
- Auf Entity Lifecycle Events reagieren mit
- Entity Callback Funktionen
- Event Listener Klassen, Services, Tags
- Integration der Symfony Translation Komponente
- Doctrine ORM hochperformant einsetzen
- UnitOfWork
- Flush-Strategien
- Custom Repositories
- Caching Mechanismen für
- Abfragen
- Metadaten
- Ergebnisse
- Lastverteilung über mehrere Server
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… auf Entity Lifecycle Events reagieren.
… Mehrsprachigkeit von Datenbankinhalten performant implementieren.
… die Funktionsweise des UnitOfWork erklären.
… verschiedene Flush Strategien implementieren.
… Custom Repositories für eigenen SQL Code und für Optimierungen erstellen und einsetzen.
… Caching von Abfragen, Metadaten und Ergebnissen implementieren.
… die wichtigsten Möglichkeiten zur Performance Optimierung nennen.
Sicherheit und Zugangskontrolle
Benutzer- und Rechtemanagement
Themen
- Warum wollen wir für komplexe Anwendungen eine Security Bibliothek verwenden?
- Integration der Symfony Security Komponente in PHP Projekte (mit und ohne Framework)
- Workflows zur Authentifizierung
- Authentifizierung gegen externe Schnittstellen
- Single Sign On
- Strategien zur Autorisierung
- Rollenanforderungen via URL Schema
- Rollenanforderungen dynamisch ermitteln
- Access Control Lists: Differenzierung nach Objekt und Zugriffsart
- Services und Voters für spezielle Anforderungen
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… erklären in welchen Fällen die Verwendung einer Security Bibliothek sinnvoll ist.
… die Symfony Security Komponente in PHP Projekte integrieren (mit und ohne Framework).
… Workflows zur Authentifizierung entwerfen und sicher implementieren.
… Authentifizierung gegen externe Schnittstellen umsetzen.
… Single Sign On z.B. mit z.B. mit LDAP, OAuth, REST, SOAP, Facebook, Amazon API implementieren.
… Strategien zur Autorisierung auswählen und sicher implementieren.
Sicherheit für PHP Anwendungen
Themen
- Sicherer Umgang mit Benutzereingaben
- In Formularen
- Bei der Darstellung außerhalb von Formularen
- In der Datenbank
- Schutz vor CSRF Angriffen
- Prepared Statements zur strukturellen Vermeidung von SQL Injection Angriffen
- Vereinfachtes Installieren und Aktualisieren (Sicherheitsupdates!) von Bibliotheken
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… Formulare mit Hilfe von Validierungsregeln und CSRF-Tokens zuverlässig vor Angriffen schützen.
… Benutzereingaben sicher an eine Datenbank übergeben.
… Datenbanken mit Hilfe von PDO, MySQLi oder Doctrine ORM vor SQL Injection Angriffen schützen.
… Sicherheitsupdates für Bibliotheken mit minimalem Aufwand zeitnah einspielen.
Performance und Caching
Inhalte mit HTTP Caches und CDN hochperformant ausliefern
Themen
- Statische Inhalte hochperformant ausliefern
- CSS
- JS
- Bilder
- Videos
- Cachebare dynamische Inhalte (HTML, JSON, XML) mittels HTTP Caching noch schneller ausliefern
- Architekturen
- Lebenszeiten
- Validierung
- Invalidierung und Cache Busting
- On-Site HTTP Caches (Varnish, Nginx, Squid)
- Content Delivery Networks (CDN)
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… Bilder, CSS und Javascript Dateien mit einem Asset Manager verwalten..
… CSS und Javascript Dateien mittels Asset Manager filtern und kombinieren.
… erklären in welchen Fällen der Einsatz eines On-Site HTTP Caches oder Content Delivery Networks sinnvoll ist.
… gängige Architekturen für HTTP-Caches und Load Balancer beschreiben.
… mit Hilfe von Lebenszeiten, Validierung und Cache-Busting sicherstellen, dass HTTP Caches immer aktuell gültige Inhalte ausliefern.
Inhalte mit PHP hochperformant erstellen
Themen
- HTML, JSON, XML etc. hochperformant erstellen
- Bootstrapping
- Classmap Classloader
- Bytecode Caching
- Mehrere Applicationserver per Loadbalancer verfügbar machen
- Datenbank Zugriffe beschleunigen
- Prepared Statements
- Query Cache
- Metadata Cache
- Results Cache
- Mehrere Datenbank Server verwenden
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… erklären, wie sich die Erstellung dynamischer Inhalte (z.B. HTML, JSON, XML) mit PHP grundsätzlich beschleunigen lässt.
… Bytecode Caching auf allen gängigen Systemen (Linux, Windows, OSX etc.) implementieren.
… erklären wie Bootstrapping und Classmap Classloader eine Anwendung effizienter machen.
… Anfragen auf mehrere Applicationserver verteilen.
… Prepared Statements sowie Caching von Anfragen, Metadaten und Ergebnissen implementieren.
… Datenbank-Zugriffe über mehrere Server verteilen.
Automatisiertes Testen
Überblick: Automatisiertes Testen
Themen
- In welchen Fällen ist es sinnvoll mit automatisierten Tests zu entwickeln?
- Stabilität und Spezifität von
- Akzeptanztests
- Funktionalen Tests
- Integrationstests
- Unittests
- Unittests im Überblick
- Definition, Eigenschaften
- Anforderungen an die Architektur
- Primäre und sekundäre Mehrwerte
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… Projekte mit / ohne automatisierte Tests in Bezug auf Ihre Wartbarkeit kontrastieren.
… beschreiben wie sich Akzeptanztests, funktionale Tests, Integrationstests und Unittests hinsichtlich Ihrer Stabilität und Spezifität unterscheiden.
… erklären welche Anforderungen an die Architektur sich durch Unittests ergeben.
… Primäre und sekundäre Mehrwerte des Entwickelns mit Unittests aufzählen.
Unittests und Coverage Reports
Themen
- In welchen Fällen ist es sinnvoll mit Unittests zu entwickeln?
- Unittests
- Definition
- Installation und Konfiguration von PHPUnit im Kontext von Symfony
- Testklassen, Testmethoden, Hilfsmethoden
- Ergebnisse überprüfen
- Werfen von Ausnahmen sicherstellen
- Unittests für Klassen mit Abhängigkeiten
- Anforderungen an die Architektur
- Mock Objekte / Stubs
- generieren / implementieren
- mit Verhalten ausstatten
- Code Coverage / Testabdeckung
- Reports mit PHPUnit erstellen
- Reports interpretieren
- Strategien für große Testabdeckung
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… PHPUnit für Symfony konfigurieren.
… Unittests mit Testklassen, Testmethoden und Hilfsmethoden implementieren.
… die Ergebnisse zu testender Methoden überprüfen.
… sicherstellen das erwartete Ausnahmen geworfen werden.
… Mock Objekte wahlweise implementieren oder generieren
… Mock Objekte mit dem für den jeweiligen Test erforderlichen Verhalten ausstatten.
… Code Coverage Reports mit PHPUnit erstellen und interpretieren.
… erklären für welche Teile einer Anwendung jeweils welcher Grad von Testabdeckung angemessen ist.
… erklären wie man mit wenig Aufwand große Testabdeckung erreicht.
Funktionale Tests und Integrationstests
Themen
- Integrationstests
- Definition
- Implementierung mit PHPUnit
- Funktionales Testen von Anwendungen
- Selenium für PHPUnit
- Behat incl. Plugins
- Symfony Browserkit für PHPUnit
- Tests für Anwendungen mit Datenbank
- Verschiedene definierte Datenbankzustände erzeugen mit Fixtures
- Fixtures in Integrationstests und funktionale Tests integrieren
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… Integrationstests von Unittests und funktionalen Tests abgrenzen.
… Integrationstests mit PHPUnit implementieren.
… die Unterschiede und Gemeinsamkeiten von Selenium, Behat und dem Symfony Browserkit benennen.
… Datenbank Fixtures implementieren mit plain PHP, Doctrine DBAL oder ORM.
… Integrationstests und funktionale Tests mit Datenbank Fixtures implementieren.
Werkzeuge und Workflows
Themen
- Überblick: Moderne Werkzeuge für Entwickler
- Integrated Development Environment (IDE)
- XDebug mit IDE Integration
- PHP CLI
- PHPUnit
- Template Engines
- Composer
- Webserver
- Vagrant / Puppet
- GIT
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… einen Überblick über die Möglichkeiten moderner Werkzeuge für die Web-Entwicklung geben.
… PHPStorm für komplexe Projekte konfigurieren.
… konzeptuell beschreiben wie man mit Vagrant und Puppet identische lokale Serverkonfigurationen für alle Mitglieder eines Teams garantieren kann.
… Workflows für effektive Teamarbeit mit modernen Sourcecode Management Systemen benennen.
Framework Updates: Symfony
Themen
- Symfony Versionsstrategie
- Semantische Versionierung
- Regeln zur Abwärtskompatibilität
- Veraltete Funktionsaufrufe finden
- Phpunit Symfony Bridge
- Web Debug Toolbar
- PHP Deprecation-Logging
- Anwendungen vorbereiten für Update von Symfony
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… Framework Updates zeitlich einplanen.
… unterscheiden welche Aufwände mit verschiedenen Typen von Updates verbunden sind.
… veraltete Funktionsaufrufe in eigenen Anwendungen systematisch ersetzen.
… eigene Anwendungen Schritt für Schritt von Symfony 2 auf Symfony 3 aktualisieren.
Systematische Behandlung von Ausnahmen und Fehlersuche
Themen
- Ausnahmen systematisch behandeln
- Ausnahmen werfen und fangen
- Unterschiede im Umgang mit Fehlern und Ausnahmen
- Umgang mit Ausnahmen im Kontext einer MVC Architektur
- Klassenhierarchien für Ausnahmen
- Polymorphie für Ausnahmen
- Systematische Fehlersuche
- Separate Konfiguration von Entwicklungs- und Produktivumgebung
- Symfony Exception Controller
- Symfony Web Debug Toolbar
- XDebug für remote Debugging mit IDE: Konfiguration, Breakpoints, Stepping, Werte von Variablen, Diagnose mittels Code Injection
Lernziele
Die Teilnehmer können nach dieser Lerneinheit …
… den Umgang mit Fehlern und Ausnahmen kontrastieren.
… die Besonderheiten der Behandlung von Ausnahmen in einer MVC Architektur erklären.
… eigene Hierarchien von Ausnahmen entwerfen und implementieren.
… die Vorteile der Polymorphie bei der Behandlung von Ausnahmen nutzen.
… Webserver für einfache Fehlersuche konfigurieren.
… die Symfony Web Debug Toolbar und den Exception Controller in der Fehlersuche anwenden.
… XDebug mit Ihrer IDE verbinden und sehr effizient Fehler aufspüren.