Qu’est-ce qu’une interface Laravel ?
L’ interface Laravel est un contrat pour les méthodes qui seront utilisées dans une classe spécifique. En fait, les interfaces ne sont pas spécifiques à Laravel , ni même à PHP natif d’ailleurs. Depuis que nous avons démarré avec Laravel , nous parlerons des interfaces dans Laravel .
Si vous développez une petite application, il n’est pas nécessaire d’utiliser des référentiels. Cependant, si vous souhaitez créer des applications évolutives et organiser votre code, les référentiels vous aideront beaucoup.
Qu’est-ce que le modèle de référentiel ?
Un référentiel représente une couche architecturale qui gère la communication entre l’application et la source de données. C’est un modèle largement utilisé dont le point principal est que l’application n’a pas à savoir quelle source de données est implémentée et comment elle est implémentée. Cela facilite le basculement vers une autre source de données ou la mise en œuvre de modifications structurelles de la source de données existante.
Le modèle de référentiel introduit une interface de référentiel , qui définit la manière dont l’application et les sources de données doivent communiquer. Chaque source de données a sa propre classe qui implémente l’interface du référentiel. La classe contrôleur appellera les méthodes définies dans l’interface du référentiel et ne saura pas comment et d’où les données sont extraites, parlons maintenant des interfaces.
Tout d’abord, que sont les interfaces ?
Les interfaces sont des classes 100% abstraites – elles ont des méthodes mais les méthodes n’ont pas de “tripes”.Les interfaces ne peuvent pas être instanciées – elles sont une construction en POO qui vous permet d’injecter des “qualités” dans des classes .. comme des classes abstraites.Là où une classe abstraite peut avoir à la fois des méthodes vides et fonctionnelles/concrètes, les méthodes d’interface doivent toutes être des coquilles – c’est-à-dire qu’il doit être laissé à la classe (utilisant l’interface) d’étoffer les méthodes.
N’oubliez pas : lorsqu’une classe utilise/implémente une interface, la classe DOIT définir toutes les méthodes/fonctions de l’interface, sinon le moteur php affichera une erreur.
OBJECTIFS PRINCIPAUX D’UNE INTERFACE :
Les interfaces vous permettent de définir/créer une structure commune pour vos classes — pour établir une norme pour les objets.Les interfaces résolvent le problème de l’héritage unique – elles vous permettent d’injecter des « qualités » à partir de plusieurs sources.Les interfaces fournissent une structure base/racine flexible que vous n’obtenez pas avec les classes.Les interfaces sont idéales lorsque plusieurs codeurs travaillent sur un projet – vous pouvez configurer une structure lâche que les programmeurs doivent suivre et les laisser se soucier des détails.
Maintenant, vous vous demandez peut-être quand je devrais utiliser le référentiel au lieu de l’interface ou vice-versa.
QUAND FAIRE UNE INTEFACE ?
Si vous avez une classe qui n’est jamais directement instanciée dans votre programme, c’est un bon candidat pour une interface. En d’autres termes, si vous créez une classe pour servir uniquement de parent à d’autres classes, elle devrait probablement être transformée en interface.Lorsque vous savez quelles méthodes une classe devrait avoir mais que vous n’êtes pas sûr des détails.Lorsque vous souhaitez cartographier rapidement les structures de base de vos classes pour servir de modèle à suivre pour les autres, gardez la base de code prévisible et cohérente.
Application — Interface personnalisée
App\Dépôts\Utilisateur
UserInterface.php :
<?php namespace App\Repositories\User ; interface UserInterface { public function getAll(); fonction publique trouver($id); fonction publique delete($id); }
UserRepoServiceProvide.php :
<?php namespace App\Repositories\User ; use Illuminate\Support\ServiceProvider ; class UserRepoServiceProvide étend ServiceProvider { /** * Démarre les services d'application. * * @return void */ public function boot() { } /** * Enregistrez les services d'application. * * @return void */ public function register() { $this->app->bind('App\Repositories\User\UserInterface', 'App\Repositories\User\UserInterface'); } }
UserRepository.php
<?php namespace App\Repositories\User ; use App\Models\User ; use App\Repositories\User\UserInterface comme UserInterface ; class UserRepository implémente UserInterface { public $user; function __construct(User $user) { $this->user = $user; } public function getAll() { return $this->user->get(); } public function find($id) { return $this->user->find($id); } public function delete($id) { return $this->user->delete($id); } }
App\Http\Controllers ;
UserController.php
public function __construct(UserRepository $user) { $this->user = $user; }public function index() { return $dene = $this->user->getAll();}
http://localhost:8000/user :

Merci de votez pour cet article :