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

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

InstallerLaravelcashierViaComposerandConfigureMigrationandBillableTrait.2.CreateSubscriptionPlansInstripedHoardAndNotePlaniDs.3.CollectPaymentMethodusingStRiceCKoutAndStoreitVetEpupInTent.4

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

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

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

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

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.

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