Überblick
Dieser Abschnitt behandelt Themen, die über die offizielle Dokumentation hinausgehen: die interne Implementierung von Laravel sowie fortgeschrittene Themen, die speziell auf die Paketentwicklung ausgerichtet sind. Anhand des Quellcodes werden praktische Entwurfsmuster und Erweiterungsmöglichkeiten erläutert.Paketentwicklung
Laravel-Paketentwicklung
Von den Grundlagen der Paketentwicklung rund um Service Provider bis hin zur Veröffentlichung von Konfigurationen, Views und Migrationen.
Laravel-Pakete mit Orchestra Testbench testen
Bauen Sie mit Orchestra Testbench eine Testumgebung für Ihre Pakete auf und prüfen Sie Service Provider, Facades und Datenbank.
Paketentwicklung mit Testbench Workbench
Erstellen Sie eine praxisnahe Prüfumgebung und bauen Sie einen Entwicklungs-Workflow mit Routen, Migrationen und Service-Startup auf.
Versionskompatibilität für Pakete verwalten
Wartungsstrategien für Pakete bei Laravel- und PHP-Upgrades sowie die Konfiguration einer Test-Matrix in GitHub Actions.
GeneratorCommand — Eigene make:-Befehle implementieren
Erfahren Sie, wie Sie eigene
make:-Befehle für Ihr Paket durch Ableiten von GeneratorCommand implementieren.Paketkonfiguration zusammenführen und cachen
Verstehen Sie den Unterschied zwischen flachem Zusammenführen und rekursivem Ersetzen, und pflegen Sie die Konfiguration mit Blick auf veröffentlichte Dateien und den Konfigurations-Cache.
Paket-Migrationen veröffentlichen und aktualisieren
Der Unterschied zwischen Veröffentlichen und direktem Laden, die Risiken von Zeitstempeländerungen und erneutem Veröffentlichen sowie Schemaänderungen für bestehende Nutzer.
Paket-Views überschreiben und aktualisieren
Die Suchreihenfolge von Views, die Kompatibilität veröffentlichter Templates und ein Update-Ablauf, der den Blade-Cache berücksichtigt.
Paket-Routen registrieren und cachen
Die Trennung von Middleware und Namen sowie der Zusammenhang zwischen Konfigurationsänderungen und dem Neuerstellen des Route-Caches.
Paket-Caches in optimize integrieren
Erläutert Registrierungsschlüssel eigener Tasks, Ausschlüsse, Ausführungsreihenfolge und den Umgang mit Fehlern.
Öffentliche Paket-Assets veröffentlichen und aktualisieren
Erläutert die Auslieferung von JavaScript und CSS, den Auswahlbereich von Tags, das Überschreiben und erneutes Veröffentlichen bei Composer-Updates.
Paketübersetzungen überschreiben und aktualisieren
Erläutert das teilweise Überschreiben von PHP-Übersetzungen, gemeinsam genutzte Schlüssel bei JSON-Übersetzungen und Aktualisierungen, die veröffentlichte Übersetzungen nicht beschädigen.
Hooks nach der Service-Auflösung in Paketen
Erläutert verzögerte Konfiguration mit callAfterResolving(), die Anwendung auf bereits aufgelöste Services und Hinweise zur Idempotenz.
Artisan-Befehle in Paketen registrieren und Abhängigkeiten auflösen
Erklärt den Unterschied zwischen Registrierung, Instanziierung und Ausführung sowie die Trennung von Seiteneffekten durch Abhängigkeitsinjektion in handle().
Event-Listener in Paketen registrieren und cachen
Erläutert den Unterschied zwischen expliziter Registrierung und automatischer Erkennung, das Vermeiden von Doppelregistrierungen, den Umfang von event:cache und die Prüfung bei Updates.
Lebenszyklus-Design für Paket-Services
Erläutert die interne Implementierung von scoped, die von Singletons gehaltenen Abhängigkeiten und die Trennung von Zustand in langlebigen Workern.
Middleware-Registrierung und Geltungsbereich in Paketen
Erklärt die Trennung von Alias-Registrierung und Anwendung, das Vermeiden überschriebener Gruppen und die Prüfung bei gecachten Routen.
Blade-Erweiterungen und Kompilierungscache in Paketen
Erläutert den Ausführungszeitpunkt eigener Direktiven und Bedingungen sowie die Cache-Verwaltung bei Updates.
Storage-Treiber in Paketen registrieren und neu auflösen
Erklärt die Registrierung der Erzeugungslogik, das Halten und Neuauflösen von Disks sowie die Prüfungen, die neben fake nötig sind.
Eigene Benachrichtigungskanäle in Paketen und Prüfung der Zustellung
Erklärt die Kanalauflösung über den Klassennamen, das Routing der Empfänger, die Verarbeitung in der Queue und Tests der tatsächlichen Zustellung.
Container-Tags und Plugin-Aggregation in Paketen
Erläutert die verzögerte Auflösung von tagged(), die Umwandlung in ein Array durch giveTagged() sowie Hinweise zu doppelten Registrierungen und Lebenszyklen.
HTTP-Client und Tests in Paketen
Erläutert die Nutzung der gemeinsamen Factory, die Trennung des Zustands pro Request sowie die Prüfung von Requests und Ausnahmen mit fake.
Log-Channels in Paketen erweitern und neu auflösen
Erläutert custom und via, die Registrierung eigener Treiber sowie Tests unter Berücksichtigung zwischengespeicherter Channels und Fallbacks.
Eigene Cache-Stores und Verträge in Paketen
Erläutert den Registrierungszeitpunkt, die Aufgabenteilung zwischen Store und Repository, die TTL-Umrechnung sowie den Unterstützungsumfang etwa bei Locks.
Mail-Transports in Paketen registrieren und testen
Erläutert die Trennung von Mailer- und Transport-Namen, die erneute Auflösung nach Konfigurationsänderungen und Sendewege, die sich mit Fakes nicht prüfen lassen.
Kontextuelle Attribute und Abhängigkeitsauflösung in Paketen
Erklärt die Konfigurationsinjektion über eigene Attribute, die Auflösungsreihenfolge, den Unterschied zwischen make und call sowie die Lebensdauer bereits erzeugter Services.
Geplante Aufgaben in Paketen registrieren und pflegen
Erklärt die ausdrückliche Aktivierung, die Registrierung nach dem Auflösen des Schedule, doppelte Registrierung und Sperrnamen sowie Prüfungen bei Konfigurationsänderungen.
Eigene Session-Treiber in Paketen
Erklärt den Speichervertrag des Handlers, die ausdrückliche Auswahl, TTL und Speicherformat sowie das Halten und Prüfen bereits erzeugter Stores.
Datenbankverbindungen in Paketen erweitern
Erklärt die Erweiterung über Verbindungs- und Treibernamen, die Reihenfolge bei der Erzeugung sowie das Halten und Neuerzeugen von Verbindungen.
Dynamische Relationen in Paketen registrieren
Fügen Sie Relationen hinzu, ohne Modelle zu ändern, und prüfen Sie explizite Schlüssel, Namenskonflikte und Vererbung sowie die Lebensdauer des Registrierungszustands.
String-Validierungsregeln in Paketen registrieren
Erklärt die Registrierung an der Factory, Meldungen und Übersetzungen, den Unterschied zwischen Implicit- und Dependent-Regeln sowie die Lebensdauer bereits erzeugter Validatoren.
Interna des Frameworks
Anwendungsstruktur ab Laravel 11
Das gesamte Slim Application Skeleton sowie die interne Implementierung von Application::configure() bis zum ApplicationBuilder.
Macroable-Trait
Funktionsweise und Anwendungsmuster des Macroable-Traits, mit dem Sie bestehenden Laravel-Klassen eigene Methoden hinzufügen können.
Conditionable-Trait
Die interne Implementierung der Methoden when()/unless() sowie Anwendungsmuster für den Entwurf fluent APIs.
Illuminate\Support\Manager — Anatomie des Treibersystems
Die zentrale Klasse des Treibersystems, das seit Laravel 4.0 existiert. Von der Registrierung eigener Treiber bis zum MultipleInstanceManager.
Pipeline-Muster
Funktionsweise der Klasse Illuminate\Pipeline\Pipeline und Muster, um mehrere Verarbeitungsschritte als Kette zusammenzusetzen.
InteractsWithData-Trait
Erläutert das Design des Traits, mit dem Sie in der Paketentwicklung eine Datenzugriffs-API in eigenen Klassen implementieren.
tap()-Helper und Tappable-Trait
Verwendung und Implementierungsmuster des Laravel-Helpers tap() sowie des Traits Tappable.
PHP-Attribute
So beschreiben Sie mit den in Laravel 13 eingeführten bzw. erweiterten PHP-Attributen die Konfiguration von Jobs und Modellen deklarativ.
Interne Implementierung des once()-Helpers
Die Funktionsweise des WeakMap-Caches über die Klassen Once und Onceable sowie die Anwendung im Eloquent-Trait PreventsCircularRecursion.
Eloquent-Deep-Dive
Eigene Casts in Eloquent
Eigene Casts durch Implementierung des Interfaces CastsAttributes. Value-Object-Muster, Inbound-Casts und Castables werden ebenfalls vorgestellt.
Eloquent-Observer und Model-Events
Funktionsweise der Events, die Eloquent-Modelle auslösen, sowie die zentrale Verwaltung von Events über Observer-Klassen.
Eloquent-Scopes
Funktionsweise lokaler und globaler Scopes. Von der internen Implementierung wie SoftDeletingScope bis hin zu praktischen Anwendungsfällen.
Collection Deep Dive
Die Implementierung der Laravel Collection aus Sicht der Historie, Klassenstruktur, PHPDoc-Generics und einer Anleitung zum Lesen des Quellcodes.
Higher-Order Messages in Collections
Funktionsweise und praktischer Einsatz der Higher-Order Messages in Collections.
Eloquent afterQuery und der Vertrag der Abfrageergebnisse
Ergebnisverarbeitung in lokalen Scopes sowie Unterschiede bei Typen, Aufrufanzahl und Seitenerkennung je nach Abrufmethode.
MCP und KI
Einen MCP-Server mit Laravel bauen
Bauen Sie mit dem Paket laravel/mcp einen produktionsreifen MCP-Server auf. Von der Implementierung von Tools, Ressourcen und Prompts bis hin zur Authentifizierung.
Einen eigenen Provider für das AI SDK erstellen
Lesen Sie den Quellcode des Laravel AI SDK und implementieren Sie einen eigenen Provider für einen KI-Dienst, der nicht standardmäßig unterstützt wird.
Einen eigenen Agenten für Boost erstellen
Ein tiefer Blick in die Erweiterungsarchitektur von Laravel Boost sowie eine Anleitung zum Erstellen eigener Agenten.
Agenten-Middleware im Laravel AI SDK
Erklärt die Ausführungsreihenfolge pro Schritt, die Verarbeitung nach der Modellantwort und das Anhalten anhand kumulierter Tokens.
Authentifizierung, Validierung und Weiteres
Eigene Auth-Guards implementieren
Wie Sie eigene Auth-Guards durch Implementierung der Interfaces Guard und StatefulGuard erstellen — bis auf Quellcode-Ebene erklärt.
Eigene Validierungsregeln
Wie Sie die Validierung mit Regel-Objekten oder Closures erweitern — inklusive Blick in die interne Implementierung.
Rate Limiting anpassen
Ein tiefer Blick auf die Facade RateLimiter sowie die Implementierung individueller Rate Limits pro Benutzer, Plan oder IP-Adresse.
Fortgeschrittenes Testen mit Pest
Von der Expectation API über Datasets, Fakes bis hin zu Mockery — systematische Erläuterung fortgeschrittener Pest-Techniken.