Le référentiel, de manière générale, est responsable de la gestion des opérations sur les sources de données. Le référentiel nous offre un moyen centralisé de gérer nos opérations liées à la base de données, augmente la lisibilité du code et facilite le suivi de l'exception si elle se produit. Cela nous aide également à découpler le code de la couche de domaine. Il peut s'agir d'une interface, d'un composant ou d'une classe qui sépare les opérations du domaine et de la base de données. Dans cette rubrique, nous allons découvrir le référentiel PHP.
PUBLICITÉ Cours populaire dans cette catégorie DEVELOPPEUR PHP - Spécialisation | Série de 8 cours | 3 tests simulésCommencez votre cours de développement de logiciels libres
Développement Web, langages de programmation, tests de logiciels et autres
À l'intérieur de cela, nous pouvons définir nos opérations de base de données plus identiques chargées de récupérer les données de la base de données, de les mettre à jour et de les supprimer. Comment nous pouvons définir cela, voir ci-dessous ;
interface name_oF_interface { // logic goes here. Can define the methods which are needed to haled the db operations }
Dans la syntaxe ci-dessus, nous définissons une interface qui contiendra différentes méthodes. Ce mot-clé interface est suivi du nom de l'interface que l'on souhaite donner. Voyons une syntaxe pratique pour une meilleure compréhension de la syntaxe, voir ci-dessous ;
interface DemoInteface { public function cerate(Object $obj); public function delete($id); public function update(Object $obj); //many more methods we can define here. // but we need to provide their implementation as well in the class which is using this repo. }
Dans la syntaxe ci-dessus, nous avons défini de nouvelles méthodes pour les opérations sur les bases de données, et nous fournirons leur implémentation dans les différentes classes.
Pour l'instant, nous savons que les référentiels sont utilisés pour gérer les opérations de base de données. Nous pouvons donc maintenant dire qu'il agit comme une couche entre le niveau de données et les objets de domaine, comme n'importe quel autre langage. Cela présente de nombreux avantages, car il nous permet de gérer de manière centralisée nos opérations de données. De plus, les référentiels nous aident également à gérer les entités ; nous pouvons récupérer ces entités et les charger dans des objets de domaine. Nous pouvons également modifier ces entités.
Les opérations de base effectuées à l'aide des référentiels sont les suivantes :
1. Nous pouvons récupérer les entités de la base de données et les stocker dans la mémoire, ou nous pouvons convertir ces objets d'entité en objets de domaine pour de meilleures modifications car il est toujours recommandé de ne pas modifier directement les objets d'entité.
2. Après avoir été récupérés dans la base de données, nous pouvons mettre à jour ces objets et les envoyer pour les enregistrer dans la base de données en utilisant uniquement des référentiels. L’ensemble de ce processus peut être effectué en utilisant des transactions. Si une exception se produisait lors de l'interaction avec la base de données, nous pourrions annuler l'intégralité de la transaction.
3. Nous pouvons facilement gérer l'exception car toutes les exceptions se produiront uniquement au niveau de la couche de persistance.
Lorsque nous travaillons avec le modèle de référentiel, nous avons de nombreuses couches, ce qui est géré très correctement. Par exemple, nous avons différentes couches telles que :
Nous allons maintenant prendre un exemple où nous allons définir certaines classes et référentiels en fonction d'eux et essayer de comprendre comment ils fonctionnent réellement. De plus, nous allons voir le flux du référentiel voir ci-dessous ;
Supposons que nous ayons des objets ici, l'un est l'acheteur et l'autre est la commande. Cette commande comprendra les données de l'acheteur et d'autres informations telles que l'adresse où nous souhaitons la livraison, le nom de la commande, etc. Nous allons donc diviser cela en trois couches décrites ci-dessous ;
1. Couche de domaine: Nous créerons des objets de domaine de toutes les classes disponibles. Dans notre exemple, il s’agit de la classe Buyer an Order. Ces deux classes relèveront de la couche de domaine du modèle de référentiel. Nous utiliserons ces objets pour conserver les données de la base de données.
2. Couche de persistance: Cette couche de persistance n'est rien d'autre que le référentiel qu'on peut dire. A ce niveau, nous seuls créons notre référentiel, qui va à nouveau interagir avec la base de données. Mais pour cela, nous allons créer une interface qui contiendra toutes les méthodes nécessaires à la gestion de l'opération entre un acheteur et la commande. Cette couche nous aidera également à suivre les exceptions, et elles relèveront uniquement de la couche de persistance.
cours :
Classe d'acheteur
class Buyer { public $id; public $gender; public $email; public $firstName; public $lastName; }
Classe de commande
class Order { public $id; public $order_name; public $order_description; public $amount; public $quantity; public $buyerid; }
Référentiel :
inteface OrderRepo { // we can define our methods here according to requirement. }
Comme vous pouvez le voir dans la logique ci-dessus, nous avons affaire aux différentes couches. C'est ainsi que fonctionne le modèle de référentiel en PHP. C'est assez similaire aux autres langues.
Dans cet exemple, nous créons un référentiel pour appeler différentes méthodes. Mais pour l’instant, nous n’utilisons pas de base de données ici. Nous allons donc simplement imprimer le message après avoir appelé les méthodes de Repository.
Classe d'employé :
class Employee { public $id; public $emp_first_name; public $emp_last_name; public $gender; public $email; public $city; } interface EmployeeRepo { public function findById($id); public function create(Employee $emp); public function delete(Employee $emp); public function update(Employee $emp); }
Repository implementations for the employee :
class SQLEmployeeRepo implements EmployeeRepo { public function create(Employee $emp) { print("saving employee data here !!"); } public function findById($id) { print("finding employee data here !!"); } public function delete(Employee $emp) { print("deleting employee data here !!"); } public function update(Employee $emp) { print("updating employee data here !!"); } }
Employee Controller class:
class EmployeeControllerDemo { public function create(EmployeeRepo $repo) { $emp = new Employee; $user->emp_first_name = $_POST['emp_first_name']; $user->emp_last_name = $_POST['emp_last_name']; $user->city = $_POST['city']; $repo->create($user); // here we are creating emp object and calling creae method. } }
Output :
The repository makes our code centralized, more readable, maintainable, and easy to understand. By using the repository, we can easily track the exception and errors if they occurred at the repository level while interacting with the database. It also helps us to decouple our code with less dependency on each other. It acts as a thin layer between the db and persistence layer; some called it part of persistence only.
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!