Bonjour,

Je découvre Laravel 5.3 et je m'interroge à propos de Repositories.
Je ne comprends pas quel est l'intérêt de créer encore plus de classes, pour faire des repositories. Au sein de ces derniers, mes fonctions sont souvent très courtes (2 ou 3 lignes), et utilisent Eloquent.

Pourquoi ne pas directement utiliser Eloquent dans les controllers ?

Bonne soirée et merci !

5 réponses


Maenhyr
Réponse acceptée

Il s'agit d'une question de responsabilité (quelle classe doit faire quoi ?). Un controller ne doit pas etre responsable d'un traitement de données, son role est de récuperer des données, de les envoyer au Repository, de récuperer le résultat et d'envoyer a la vue. Utiliser un Repository te permettra de mieux découper ton code et de pouvoir faire des tests unitaires plus simplement.

A mon sens le model ne doit etre utilisé que pour des actions sur un seul objet. Si tu souhaites modifier plusieurs objets en une fois, tu dois passer par un repository.

Bonsoir.
Pour information, Grafikart a réalisé un tutoriel Laravel ou Symfony ?, tu devrais le visionner, car il me semble justement qu'il aborde ce dont tu parles concernant Laravel.

Bonsoir,
Les repository c'est pas plutôt dans Symfony justement. Sur Laravel tu passe directement par les models

Pourquoi ne pas directement utiliser Eloquent dans les controllers ?

Si tu as besoin de faire plusieurs fois une requête complexe à plusieurs endroit (comme par exemple une requete avec des JOIN ou un update bien particulier). Tu peux "construire" la requête dans une classe séparée (pour garder les moèles léger).

An-toine
Auteur

Compris, merci pour vos réponses