Table des matières
✅ 1. Qu'est-ce qu'un DTO et pourquoi l'utiliser?
✅ 2. Installez un ensemble DTO (recommandé: spatie / laravel-data)
✅ 3. Créez un DTO
✅ 4. Utilisez DTO dans une demande ou un contrôleur
Option A: à partir d'une demande de formulaire
Option B: avec une demande de formulaire DTO
✅ 5. Ajouter la coulée et la cartographie personnalisée
✅ 6. Transformer le DTO en Array / JSON
✅ 7. Utilisez les DTO dans les ressources API (facultatif)
✅ Résumé: meilleures pratiques
Maison cadre php Laravel Comment utiliser des objets de transfert de données (DTOS) dans Laravel?

Comment utiliser des objets de transfert de données (DTOS) dans Laravel?

Jul 28, 2025 am 01:03 AM

Les 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.

Comment utiliser des objets de transfert de données (DTOS) dans Laravel?

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 .

Comment utiliser des objets de transfert de données (DTOS) dans Laravel?

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:

Comment utiliser des objets de transfert de données (DTOS) dans Laravel?
  • 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.

Comment utiliser des objets de transfert de données (DTOS) dans 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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment utiliser des sous-requêtes en éloquente à Laravel? Comment utiliser des sous-requêtes en éloquente à Laravel? Aug 05, 2025 am 07:53 AM

LaraveLolientsSupportsSubQueriesInselect, d'où, et d'orderByClauses, permettant à la FlexibledataRetrievalwithoutrawsql; 1.Useesectsub () ToaddCompuledColumns likepostcountperUser; 2.Usefromsub () OrclosionInfrom () totaleaTSubQueryArableforgouredData;

Comment gérer les paiements récurrents avec Laravel Cashier? Comment gérer les paiements récurrents avec Laravel Cashier? Aug 06, 2025 pm 01:38 PM

InstallerLaravelcashierViaComposerandConfigureMigrationandBillableTrait.2.CreateSubscriptionPlansInstripedHoardAndNotePlaniDs.3.CollectPaymentMethodusingStRiceCKoutAndStoreitVetEpupInTent.4

Comment utiliser le routage des sous-domaines dans Laravel? Comment utiliser le routage des sous-domaines dans Laravel? Aug 08, 2025 pm 05:07 PM

SetUpDomainorLocalenvironmentForsUbdomainSupportuingLaravelValet, Homestead, OrhostsFileentrieslike127.0.0.1admin.yourApp.test ; 2.DefinewildcardsUbdomAinRoutesInRoutes / web.phpusingRoute :: domain ('{compte} .yourApp.com') tocapturesUbdomAnitParameters; 3.Cre

Comment planifier les commandes d'artisan à Laravel Comment planifier les commandes d'artisan à Laravel Aug 14, 2025 pm 12:00 PM

Définissez la planification de la planification des commandes de la planification de la commande Artisan: la méthode de la planification de la classe App \ Console \ Kernel; 2. Réglez la fréquence: définissez la fréquence d'exécution à travers des méthodes de chaîne telles que la syntaxe de chaque Minute, quotidien, horaire ou cron; 3. Passage des paramètres: utilisez des tableaux ou des chaînes pour passer les paramètres à la commande; 4. Planification de la commande shell: Utilisez la méthode EXEC pour exécuter les commandes système; 5. Ajouter des conditions: utilisez quand, en semaine et autres méthodes pour contrôler le calendrier d'exécution; 6. Traitement de sortie: utilisez SendOutputTo, APPENDOutputTo ou EmailoutputTo pour enregistrer ou

Comment créer une application de chat en temps réel avec Laravel et WebSockets? Comment créer une application de chat en temps réel avec Laravel et WebSockets? Aug 16, 2025 am 04:23 AM

Créer un projet Laravel et installer des packages sanctuaires et poussoirs; 2. Configurer les informations d'identification Pusher et configurer les pilotes de diffusion; 3. Créez un modèle de message et une migration; 4. Créez un événement de messages qui met en œuvre SHIDBROADSAT; 5. Configurer l'authentification Sanctum et le routage de l'API et implémenter un contrôleur de message; 6. Installer et configurer Laravelecho et Pusherjs dans le frontal; 7. Utilisez Echo pour rejoindre le canal de chat et écouter les messages; 8. Définir la logique d'autorisation de diffusion dans canaux.php; 9. Démarrez le service et testez la livraison de messages en temps réel. Vous pouvez choisir de construire un service Laravelwebsockts, et l'ensemble du processus est via LAR

Comment créer une application de chat en temps réel avec Laravel? Comment créer une application de chat en temps réel avec Laravel? Aug 04, 2025 pm 01:03 PM

SettupLaravelandInstallDependcesntences incluant les élargissements de l'InchtumandLaravelecho.2.Configurepusherasthebroadcastdriverin.envandenablethebroadcastServiceProvider.3.CreateAssageModelWithAmigrationThaticluctureSUs

Comment utiliser les opérations de chaîne courantes à Laravel? Comment utiliser les opérations de chaîne courantes à Laravel? Aug 14, 2025 pm 04:20 PM

Laravel a introduit des opérations de chaîne lisses basées sur Illuminate \ Support \ Stringable depuis la version 7. La réponse est d'utiliser Str :: of () pour démarrer les appels de chaîne. 1. Créez une instance chaînable via Str :: of ('String') et appelez la méthode enchaînée. 2. Les méthodes courantes incluent la garniture, le remplacement, l'ajout, la limace, la tige, etc. pour la mise en forme. 3. Utiliser quand ($ Condition, $ rappel) pour implémenter la conversion conditionnelle. 4. Utiliser après, avant, substr et autres méthodes pour extraire les fragments de chaîne. 5. Il peut être utilisé pour effacer l'application réelle.

Comment travailler avec des cookies à Laravel? Comment travailler avec des cookies à Laravel? Aug 04, 2025 pm 01:04 PM

ToCreateCookiesInLaravel, usetheCookie () helperorwithcookie () méthode avecparametersforname, valeur, durée, chemin, domaine, sécurisé, andhttponlyflags; 2.rerieveCookiesvia $ request-> cookie ('name') orcookie :: get ('name'), notinglarAlla

See all articles