Wie verwende ich Datenübertragungsobjekte (DTOs) in Laravel?
Jul 28, 2025 am 01:03 AMDTOs in Laravel werden verwendet, um Daten zwischen Anwendungsschichten zu organisieren, zu validieren und zu übertragen, wodurch die Vorhersehbarkeit und Testbarkeit verbessert werden. 2. Installieren Sie das empfohlene Spatie/Laravel-Data-Paket über Komponist für eine robuste DTO-Funktionalit?t. 3. Erstellen Sie ein DTO mithilfe des Artisan -Befehls. 4. Verwenden Sie DTOs in Controllern entweder über manuelle Instanziierung aus validierten Anforderungsdaten oder durch automatische Bindung durch Implementierung aus dem Rahmen. 5. Anwenden Sie das Casting- und Benennungszuordnen mithilfe von Attributen wie Withcast und MapName an, um Daten zu transformieren und zu normalisieren. 6. DTOs k?nnen leicht in Arrays oder JSONs für API -Antworten konvertiert werden, wodurch die Kompatibilit?t der Frontend verbessert wird. 7. Integrieren Sie optional DTOs in API -Ressourcen oder ordnen Sie sie direkt von eloquenten Modellen mit FringModel ab, um eine konsistente Datenformatierung über die App zu gew?hrleisten. Halten Sie DTOs immer frei von Gesch?ftslogik, verwenden Sie klare Namenskonventionen und nutzen Sie die Sicherheit des Typs, um einen sauberen, skalierbaren Code aufrechtzuerhalten.
Durch die Verwendung von Datenübertragungsobjekten (DTOs) in Laravel k?nnen Sie Daten zwischen verschiedenen Ebenen Ihrer Anwendung organisieren, validieren und übertragen - wie von einer Anfrage zu einem Dienst oder von einem Dienst an die Frontend. W?hrend Laravel DTOs nicht in die Box enth?lt, k?nnen Sie sie mithilfe von Paketen von Drittanbietern wie Spatie/Data-Transfer-Object oder Livewire-UI/Slim-DTO effektiv mithilfe von Pakete wie Spatie/Data-Transfer-Object oder Livewire-UI/Slim-DTO effektiv implementieren .

Hier erfahren Sie, wie Sie DTOs effektiv in Laravel verwenden:
? 1. Was ist ein DTO und warum es benutzt?
Ein Datenübertragungsobjekt (DTO) ist ein einfaches PHP -Objekt, das zum Tragen von Daten verwendet wird. Es ist besonders nützlich, wenn:

- Sie m?chten strukturierte Daten zwischen Diensten übergeben.
- Sie müssen die Eingaben von HTTP -Anfragen normalisieren.
- Sie arbeiten mit APIs und m?chten eine konsistente Datenformatierung.
- Sie m?chten die Sicherheit und Validierung vom Typ durchsetzen.
Anstatt RAW -Arrays zu übergeben oder Objekte zu beantragen, machen DTOs Ihren Code vorhersehbarer und einfacher zu testen.
? 2. Installieren Sie ein DTO-Paket (empfohlen: Spatie/Laravel-Data)
W?hrend Sie einfache PHP-Klassen als DTOs erstellen k?nnen, ist die Verwendung von Spatie/Laravel-Daten (der moderne Nachfolger von spatie/data-transfer-object
) der robusteste Ansatz in Laravel.

Installieren Sie es über Komponist:
Der Komponist ben?tigt Spatie/Laravel-Data
Ver?ffentlichen Sie die Konfiguration (optional):
PHP Artisan Vendor: Publish -Provider = "Spatie \ LaravelData \ LaravelDataServiceProvider"
? 3.. Erstellen Sie ein DTO
Nehmen wir an, Sie bearbeiten die Erstellung von Benutzern. Führen Sie den handwerklichen Befehl aus:
PHP Artisan Make: Data userdto
Dies schafft eine Klasse wie:
// app/dtos/userdto.php Namespace App \ dtos; Verwenden Sie Spatie \ laravelData \ Data; Klasse userDto erweitert Daten { ?ffentliche Funktion __construct ( ?ffentlicher Zeichenfolge $ Name, ?ffentliche Zeichenfolge $ E -Mail, public? String $ melefon = null, ) {} }
Sie k?nnen auch Array -Syntax oder verschachtelte Daten verwenden:
?ffentliche Funktion __construct ( ?ffentlicher Zeichenfolge $ Name, ?ffentliche Zeichenfolge $ E -Mail, ?ffentliche Adressedto $ Adresse, ?ffentliche Array $ Rollen, )
? 4. Verwenden Sie DTO in einer Anfrage oder einem Controller
Option A: Aus einer Formularanforderung
// in Ihrem Controller Verwenden Sie App \ dtos \ userDto; Verwenden Sie Illuminate \ http \ request; ?ffentlicher Funktionsgesch?ft (Anfrage $ Anfrage) { $ dto = userDto :: von ($ request-> validated ()); // zum Service übergehen UserService :: Create ($ DTO); return response ()-> json (['message' => 'Benutzer erstellt']); }
Oder besser, verwenden Sie die automatische Bindung mit FromRequest
:
// In der Controller -Methode Public Function Store (userdto $ dto) { UserService :: Create ($ DTO); return response ()-> json ($ dto); }
?? Dies funktioniert nur, wenn Sie
Spatie\LaravelData\FromRequest
in Ihrem DTO implementieren oder die ordnungsgem??e Form von Formularanforderungszuordnungen verwenden.
Option B: mit einer Formularanforderung DTO
// app/http/requests/storinguserRequest.php ?ffentliche Funktionsregeln () { zurückkehren [ 'Name' => 'Erforderlich | String | max: 255', 'E -Mail' => 'Erforderlich | E -Mail', 'Telefon' => 'nullable | String', ]; } // in Controller ?ffentlicher Funktionsgesch?ft (StoreUserRequest $ Anfrage) { $ dto = userDto :: von ($ request-> validated ()); // Logik behandeln }
? 5. Fügen Sie Casting und benutzerdefinierte Zuordnung hinzu
Verwenden Sie Datentransformatoren und -rückst?nde , um Eingaben zu formatieren:
Verwenden Sie Spatie \ laravelData \ Attribute \ MapName; Verwenden Sie Spatie \ laravelData \ Attribute \ Withcast; Verwenden Sie Spatie \ laravelData \ casts \ DateTimeInterfaceCast; Klasse userDto erweitert Daten { ?ffentliche Funktion __construct ( ?ffentlicher Zeichenfolge $ Name, ?ffentliche Zeichenfolge $ E -Mail, #[Withcast (DateTimeInterfaceCast :: Class, Format: 'YM-D')] public? \ DateTimeInterface $ dob = null, #[MapName ('Telefon_Number')] public? String $ melefon = null, ) {} }
Jetzt karten Sie phone_number
von JSON zum phone
und formatieren das Datum.
? 6. DTO in Array/JSON verwandeln
DTOs sind leicht serialisierbar:
$ dto = userDto :: von ([ 'Name' => 'John Doe', 'E -Mail' => 'John@example.com' ]); return $ dto-> toArray (); // oder automatisch JSON als Antwort: return response ()-> json ($ dto);
? 7. Verwenden Sie DTOs in API -Ressourcen (optional)
Sie k?nnen DTOs neben API -Ressourcen verwenden:
Neue JSONResponse zurückgeben (userDto :: von ($ user));
Oder markierte eloquente Modelle zu DTOs:
Userdto :: von ([ 'name' => $ user-> name, 'E-Mail' => $ User-> E-Mail, ]);
Sie k?nnen Ihr DTO sogar automatisch von einem Modell mit Spatie\LaravelData\FromModel
abgeben.
? Zusammenfassung: Best Practices
- ? Verwenden Sie Spatie/Laravel-Data für leistungsstarke, saubere DTOs.
- ? Nennen Sie DTOS klar:
UserDTO
,CreateUserDTO
,UserProfileDTO
. - ? Verwenden Sie sie in Controllern , Diensten und APIs , um den Datenfluss zu standardisieren.
- ? Hebel -Typ -Hinweise , Standardwerte und Casting .
- ? Vermeiden Sie es, die Gesch?ftslogik in DTOs zu setzen - sie sollten Datencontainer sein.
Die Verwendung von DTOs h?lt Ihre Laravel-App sauber, typfrei und leichter zu warten-insbesondere wenn sie w?chst. Sobald Sie sie für Formulare, APIs und Service -Ebenen verwenden, fragen Sie sich, wie Sie ohne sie gelebt haben.
Grunds?tzlich ist es ein kleines Setup für einen gro?en Sieg in der Codequalit?t.
Das obige ist der detaillierte Inhalt vonWie verwende ich Datenübertragungsobjekte (DTOs) in Laravel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen





In Laravel gibt es drei M?glichkeiten, benutzerdefinierte Validierungsregeln hinzuzufügen: Verwenden von Schlie?ungen, Regelklassen und Formularanfragen. 1. Verwenden Sie Verschlüsse, um für die leichte überprüfung geeignet zu sein, z. B. die Verhinderung des Benutzernamens "Admin". 2. Erstellen Sie Regelklassen (z. B. validusernamerule), um komplexe logische und aufrechterhalten zu machen; 3. Integrieren Sie mehrere Regeln in Formularanfragen und verwalten Sie die überprüfungslogik zentral. Gleichzeitig k?nnen Sie Eingabeaufforderungen über benutzerdefinierte Nachrichtenmethoden oder eingehende Fehlermeldungsarrays festlegen, um die Flexibilit?t und Wartbarkeit zu verbessern.

Zu den Kernmethoden für Laravel -Anwendungen zur Implementierung mehrsprachiger Unterstützung geh?ren: Einstellen von Sprachdateien, dynamischem Sprachwechsel, übersetzungs -URL -Routing und Verwaltung von übersetzungsschlüssel in Blade -Vorlagen. Organisieren Sie zun?chst die Zeichenfolgen jeder Sprache in den entsprechenden Ordnern (wie EN, ES, FR) im Verzeichnis /Ressourcen /Lang und definieren Sie den übersetzungsinhalt, indem Sie das assoziative Array zurückgeben. 2. übersetzen Sie den Schlüsselwert über den Helfer -Funktionsaufruf \ _ \ _ () und verwenden Sie App :: setLocale (), um Sitzungs- oder Routing -Parameter zu kombinieren, um das Sprachwechsel zu realisieren. 3. Für übersetzungs -URLs k?nnen Pfade für verschiedene Sprachen durch vorangestellte Routing -Gruppen definiert werden oder Alias ??in Sprachdateien dynamisch zugeordnet werden. 4.. Halten Sie die übersetzungsschlüssel pr?zise und

TOWORKEFEKTIVE Withpivottablessinlaravel, First AccesspivotDatAusing withpivot () orwithtimestamps (), dann updateEntries mit

LaravelProvidesacleanandflexiblewaytosendnotificationsViamultiPhannels-Likeemail, SMS, In-Appalerts und Pushnotifikationen

ServiceProvider ist der Kernmechanismus, der im Laravel -Framework zum Registrieren von Diensten und zur Initialisierungslogik verwendet wird. Sie k?nnen einen benutzerdefinierten ServiceProvider über den handwerklichen Befehl erstellen. 1. Die Registermethode wird verwendet, um Dienste zu binden, Singletonen zu registrieren, Aliase usw. festzulegen, und andere Dienste, die noch nicht geladen wurden, k?nnen nicht aufgerufen werden. 2. Die Boot -Methode wird ausgeführt, nachdem alle Dienste registriert wurden und zur Registrierung von Ereignish?rern, zur Anzeige von Synthesizern, Middleware und einer anderen Logik verwendet wird, die von anderen Diensten abh?ngt. Zu den gemeinsamen Verwendungen geh?ren Bindungsschnittstellen und Implementierungen, Registrieren von Fassaden, Ladekonfigurationen, Registrierung von Befehlszeilenanweisungen und Ansichtskomponenten; Es wird empfohlen, relevante Bindungen an einen ServiceProvider zu zentralisieren, um es zu verwalten und der Registrierung zu achten

Die Abh?ngigkeitsinjektion behandelt automatisch die Klassenabh?ngigkeiten über Servicebeh?lter in Laravel ohne manuelle neue Objekte. Sein Kern ist die Konstruktorinjektion und Methodeninjektion, z. B. automatisch in der Anforderungsinstanz im Controller weitergegeben. Laravel pariert Abh?ngigkeiten durch Typeingabeaufforderungen und erstellt rekursiv die erforderlichen Objekte. Die Bindungsschnittstelle und -implementierung k?nnen vom Dienstanbieter verwendet werden, um die Bind -Methode zu verwenden, oder Singleton, um einen Singleton zu binden. Wenn Sie es verwenden, müssen Sie die Eingabeaufforderungen sicherstellen, Konstruktorkomplikationen vermeiden, Kontextbindungen mit Vorsicht verwenden und automatische Parsingregeln verstehen. Das Beherrschen dieser kann die Code -Flexibilit?t und -wartung verbessern.

Zu den Kernmethoden zum Umgang mit Ausnahmen und Aufzeichnungsfehlern in Laravel -Anwendungen geh?ren: 1. Verwenden Sie die App \ Ausnahmen \ Handler -Klasse, um unberührte Ausnahmen zentral zu verwalten und Ausnahmeinformationen über die Berichtsmethode () wie das Senden von Slack -Benachrichtigungen aufzunehmen oder zu benachrichtigen. 2. Konfigurieren Sie das Protokollsystem mit Monolog, setzen Sie die Protokoll- und Ausgangsmethode in config/logging.php und aktivieren Sie Fehler und über die überstufige Protokolle in der Produktionsumgebung. Gleichzeitig k?nnen detaillierte Ausnahmeinformationen in Bericht () in Kombination mit dem Kontext manuell erfasst werden. A. Passen Sie die Render () -Methode an, um eine einheitliche JSON -Formatfehlerreaktion zurückzugeben, wodurch die Zusammenarbeiteffizienz des vorderen und hinteren Ende der API verbessert wird. Diese Schritte sind

Die Laravel -Leistungsoptimierung kann die Anwendungseffizienz durch vier Kernrichtungen verbessern. 1. Verwenden Sie den Cache -Mechanismus, um doppelte Abfragen zu reduzieren, und speichern Sie die Daten selten über Cache :: Denken Sie daran () und andere Methoden, um die H?ufigkeit des Datenbankzugriffs zu reduzieren. 2. Die Datenbank aus dem Modell optimieren, um Anweisungen abzufragen, N 1 -Abfragen zu vermeiden, Feldabfragen anzugeben, Indizes hinzuzufügen, die Verarbeitung und Lesen von Paging und das Schreiben von Trennungen zu reduzieren und Engp?sse zu reduzieren. 3.. Verwenden Sie zeitaufw?ndige Vorg?nge wie E-Mail-Senden und Dateien exportieren in die asynchrone Warteschlangenverarbeitung, verwenden Sie den Supervisor, um Arbeitnehmer zu verwalten und Wiederholungsmechanismen einzurichten. 4. Verwenden Sie Middleware- und Dienstanbieter vernünftigerweise, um komplexe Logik- und unn?tige Initialisierungscode zu vermeiden und das Laden von Diensten zu verz?gern, um die Start -Effizienz zu verbessern.
