Comment utiliser des objets de transfert de données (DTOS) dans Laravel?
Jul 28, 2025 am 01:03 AMLes DTO dans Laravel sont utilisés pour organiser, valider et transférer des données entre les couches d'application, améliorer la prévisibilité et la testabilité. 2. Installez le package Spatie / Laravel-Data recommandé via Composer pour une fonctionnalité DTO robuste. 3. Créez un DTO en utilisant la commande de commande artisan: données, définissant la structure des données avec des astuces de type et la nidification facultative. 4. Utilisez des DTO dans les contr?leurs via l'instanciation manuelle à partir des données de demande validées ou par liaison automatique en implémentant Fromrequest. 5. Appliquer la mappage de coulée et de dénomination à l'aide d'attributs comme Withcast et MapName pour transformer et normaliser les données. 6. Les DTO peuvent être facilement convertis en tableaux ou JSON pour les réponses API, améliorant la compatibilité des frontend. 7. Intrégissez éventuellement DTOS avec les ressources API ou les mappez directement à partir de modèles éloquents à l'aide de FromModel, garantissant un format de données cohérent à travers l'application. Gardez toujours les DTO sans logique commerciale, utilisez des conventions de dénomination claires et tirez parti de la sécurité du type pour maintenir le code propre et évolutif.
L'utilisation d'objets de transfert de données (DTOS) dans Laravel vous aide à organiser, valider et transférer des données entre différentes couches de votre application, comme une demande à un service ou d'un service au frontend. Alors que Laravel n'inclut pas les DTOS hors de la bo?te, vous pouvez les implémenter efficacement en utilisant des classes PHP, souvent à l'aide de packages tiers comme Spatie / Data-Transfer-Object ou LiveWire-UI / Slim-DTO .

Voici comment utiliser efficacement DTOS dans Laravel:
? 1. Qu'est-ce qu'un DTO et pourquoi l'utiliser?
Un objet de transfert de données (DTO) est un objet PHP simple utilisé pour transporter des données. C'est particulièrement utile lorsque:

- Vous souhaitez passer des données structurées entre les services.
- Vous devez normaliser les entrées des demandes HTTP.
- Vous travaillez avec des API et souhaitez le formatage cohérent des données.
- Vous souhaitez appliquer la sécurité et la validation de type.
Au lieu de passer des tableaux bruts ou de demander des objets, les DTO rendent votre code plus prévisible et plus facile à tester.
? 2. Installez un ensemble DTO (recommandé: spatie / laravel-data)
Bien que vous puissiez créer des classes PHP simples comme DTOS, l'utilisation de spatie / laravel-data (le successeur moderne de spatie/data-transfer-object
) est l'approche la plus robuste de Laravel.

L'installez via le compositeur:
Le compositeur a besoin de spatie / laravel-data
Publier la configuration (facultatif):
PHP Artisan Vendor: Publish --provider = "Spatie \ Laraveldata \ LaraveldataServiceProvider"
? 3. Créez un DTO
Disons que vous gérez la création d'utilisateurs. Exécutez la commande artisan:
PHP Artisan Make: Data Userdto
Cela crée une classe comme:
// app / dtos / userdto.php Espace de noms App \ DTOS; Utilisez Spatie \ Laraveldata \ Data; La classe Userdto étend les données { fonction publique __construct ( Nom de cha?ne publique, nom, String public $ e-mail, public? String $ téléphone = null, ) {} }
Vous pouvez également utiliser la syntaxe de tableau ou les données imbriquées:
fonction publique __construct ( Nom de cha?ne publique, nom, String public $ e-mail, Adresse publiqueDto $ Adresse, Array public $ r?les, )
? 4. Utilisez DTO dans une demande ou un contr?leur
Option A: à partir d'une demande de formulaire
// dans votre contr?leur Utilisez App \ DTOS \ UserdTo; Utiliser illuminate \ http \ request; Magasin de fonctions publiques (demande $ demande) { $ dto = userdto :: from ($ request-> valided ()); // passer au service UserService :: Create ($ dto); return réponse () -> json (['message' => 'utilisateur créé']); }
Ou mieux, utilisez la liaison automatique avec FromRequest
:
// dans la méthode du contr?leur Public Function Store (userdto $ dto) { UserService :: Create ($ dto); retour de réponse () -> JSON ($ dto); }
?? Cela ne fonctionne que si vous implémentez
Spatie\LaravelData\FromRequest
sur votre DTO ou utilisez le mappage de la demande de formulaire approprié.
Option B: avec une demande de formulaire DTO
// app / http / requêtes / storeserserRequest.php Règles de fonction publique () { retour [ 'name' => 'requis | String | max: 255', 'email' => 'requis | e-mail', 'téléphone' => 'nullable | string', ]] } // dans le contr?leur Public Function Store (StoreUserRequest $ demande) { $ dto = userdto :: from ($ request-> valided ()); // gérer la logique }
? 5. Ajouter la coulée et la cartographie personnalisée
Utilisez des transformateurs de données et des roulettes pour formater l'entrée:
Utilisez Spatie \ Laraveldata \ Attributs \ MapName; Utilisez spatie \ laraveldata \ attributs \ withcast; Utilisez Spatie \ Laraveldata \ Casts \ DateTimeInterFaceCast; La classe Userdto étend les données { fonction publique __construct ( Nom de cha?ne publique, nom, String public $ e-mail, # [Withcast (dateTimeInterFaceCast :: class, format: 'ym-d')] public? \ DateTimeInterface $ dob = null, # [Mapname ('phone_number')] public? String $ téléphone = null, ) {} }
Maintenant, il mappe phone_number
de JSON à phone
et formats la date.
? 6. Transformer le DTO en Array / JSON
Les DTO sont facilement sérialisables:
$ dto = userdto :: from ([[ 'nom' => 'John Doe', 'email' => 'John@example.com' ])); retourner $ dto-> toArray (); // ou automatiquement JSON en réponse: retour de réponse () -> JSON ($ dto);
? 7. Utilisez les DTO dans les ressources API (facultatif)
Vous pouvez utiliser DTOS à c?té ou au lieu des ressources API:
retourner la nouvelle jsonResponse (userdto :: from ($ user));
Ou mappez des modèles éloquents aux DTO:
Userdto :: de ([[ 'name' => $ user-> name, 'e-mail' => $ user-> e-mail, ]));
Vous pouvez même que votre DTO mappe automatiquement à partir d'un modèle à l'aide de Spatie\LaravelData\FromModel
.
? Résumé: meilleures pratiques
- ? Utilisez des données spatie / laravel pour des DTO puissants et propres.
- ? Nom DTOS Clairement:
UserDTO
,CreateUserDTO
,UserProfileDTO
. - ? Utilisez-les dans les contr?leurs , les services et les API pour normaliser le flux de données.
- ? Type de levier Indices , valeurs par défaut et casting .
- ? évitez de mettre la logique métier dans les DTO - ils doivent être des conteneurs de données.
L'utilisation de DTOS garde votre application Laravel propre, à sécurité et plus facile à entretenir, surtout à mesure qu'elle se développe. Une fois que vous avez commencé à les utiliser pour les formulaires, les API et les couches de service, vous vous demanderez comment vous avez vécu sans eux.
Fondamentalement, c'est une petite configuration pour une grande victoire en qualité de code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Il existe trois fa?ons d'ajouter des règles de validation personnalisées dans Laravel: en utilisant les fermetures, les classes de règles et les demandes de formulaire. 1. Utilisez les fermetures pour être adaptées à la vérification légère, comme empêcher le nom d'utilisateur "admin"; 2. Créez des classes de règles (telles que ValidUsernamerule) pour rendre la logique complexe plus claire et maintenable; 3. Intégrer plusieurs règles dans les demandes de formulaire et gérer de manière centralisée la logique de vérification. Dans le même temps, vous pouvez définir des invites via des méthodes de messages personnalisés ou des réseaux de messages d'erreur entrants pour améliorer la flexibilité et la maintenabilité.

Les méthodes de base pour les applications Laravel pour implémenter le support multilingue comprennent: la définition des fichiers linguistiques, la commutation de langage dynamique, le routage des URL de traduction et la gestion des clés de traduction dans les modèles de lame. Tout d'abord, organisez les cha?nes de chaque langue dans les dossiers correspondants (tels que EN, ES, FR) dans le répertoire / Resources / Lang, et définissez le contenu de traduction en renvoyant le tableau associatif; 2. Traduire la valeur de clé via l'appel de fonction d'assistance \ _ \ _ () et utilisez l'application :: setLocale () pour combiner des paramètres de session ou de routage pour réaliser la commutation du langage; 3. Pour les URL de traduction, les chemins peuvent être définis pour différentes langues via des groupes de routage préfixés ou par voie d'alias dans les fichiers linguistiques mappés dynamiquement; 4. Gardez les touches de traduction concises et

TOWORKEFFECTECTEMENTSWitHPivottablesInLaravel, FirstAccessPivotDatauSingWithPivot () Orwithtimestamps (), ThepDateEntrieswitHupDateExistPivot (), ManagerLeshipSviaDeTache

LaravelprovidesAcleanAndFlexiblewayToSendNotificationsViamultipleChannelsLikeEmail, SMS, In-Appakets, andpushNotifications.youdefinenotificationChannelsInthevia () MethodofanotificationClass, ANDIDEFINENOTIFICATIONSECHETHODSLIKETOMAIL (), ToDatabase (), Ortovonage

ServiceProvider est le mécanisme de base utilisé dans le cadre Laravel pour l'enregistrement des services et l'initialisation de la logique. Vous pouvez créer un ServiceProvider personnalisé via la commande Artisan; 1. La méthode de registre est utilisée pour lier les services, enregistrer des singletons, définir des alias, etc., et d'autres services qui n'ont pas encore été chargés ne peuvent pas être appelés; 2. La méthode de démarrage s'exécute après que tous les services sont enregistrés et sont utilisés pour enregistrer les écouteurs d'événements, afficher les synthétiseurs, middleware et autres logiques qui dépend d'autres services; Les utilisations courantes incluent les interfaces et les implémentations de liaison, l'enregistrement des fa?ades, le chargement des configurations, l'enregistrement des instructions de ligne de commande et des composants de vue; Il est recommandé de centraliser les liaisons pertinentes à un ServiceProvider pour gérer et de faire attention à l'enregistrement

L'injection de dépendance gère automatiquement les dépendances de classe via des conteneurs de service dans Laravel sans de nouveaux objets manuels. Son noyau est l'injection de constructeur et l'injection de méthode, comme le passage automatiquement de l'instance de demande dans le contr?leur. Laravel analyse les dépendances via des invites de type et crée récursivement les objets requis. L'interface de liaison et l'implémentation peuvent être utilisées par le fournisseur de services pour utiliser la méthode Bind, ou singleton pour lier un singleton. Lorsque vous l'utilisez, vous devez vous assurer des invites de type, éviter les complications du constructeur, utiliser les liaisons contextuelles avec prudence et comprendre les règles d'analyse automatique. La ma?trise peut améliorer la flexibilité et la maintenance du code.

Les méthodes de base pour gérer les exceptions et les erreurs d'enregistrement dans les applications Laravel incluent: 1. Utilisez la classe App \ Exceptions \ Handler pour gérer de manière centralisée les exceptions non gérées, et enregistrer ou notifier les informations d'exception via la méthode Report (), telles que l'envoi de notifications Slack; 2. Utilisez Monolog pour configurer le système de journal, définissez le niveau de journal et la méthode de sortie dans config / logging.php et activer les journaux d'erreur et supérieurs à l'environnement de production. Dans le même temps, des informations d'exception détaillées peuvent être enregistrées manuellement dans report () en combinaison avec le contexte; 3. Personnalisez la méthode Render () pour retourner une réponse d'erreur de format JSON unifié, améliorant l'efficacité de collaboration de l'extrémité avant et arrière de l'API. Ces étapes sont

L'optimisation des performances de Laravel peut améliorer l'efficacité de l'application à travers quatre directions de base. 1. Utilisez le mécanisme de cache pour réduire les requêtes en double, stocker rarement la modification des données via Cache :: Remember () et d'autres méthodes pour réduire la fréquence d'accès à la base de données; 2. Optimiser la base de données de la requête du modèle aux requêtes, évitez les requêtes N 1, spécifiant les requêtes de champ, ajoutant des index, pagination de traitement et de lecture et de séparation d'écriture et réduire les goulots d'étranglement; 3. Utilisez des opérations longues telles que l'envoi d'e-mails et l'exportation de fichiers vers le traitement asynchrone de file d'attente, utilisez le superviseur pour gérer les travailleurs et configurer des mécanismes de réessayer; 4. Utilisez raisonnablement les fournisseurs de middleware et de services pour éviter une logique complexe et un code d'initialisation inutile et retarder le chargement des services pour améliorer l'efficacité du démarrage.
