Tutoriel sur le concept de programmation orientée objet (POO) PHP avec exemple
Qu’est-ce que les POO ?
L'orientation objet est une approche du développement logiciel qui modélise l'application autour d'objets du monde réel tels que des employés, des voitures, des comptes bancaires, etc. Une classe définit les propriétés et les méthodes d'un objet du monde réel. Un objet est une occurrence d'une classe.
Les trois composants de base de l’orientation objet sont :
- Analyse orientée objet – fonctionnalité du système
- Conception orientée objet – architecture du système
- Programmation orientée objet – mise en œuvre de l'application
Principes de programmation orientée objet
Les trois grands principes de la POO sont :
- Encapsulation – il s’agit de masquer les détails d’implémentation et d’exposer uniquement les méthodes. L'objectif principal de l'encapsulation est de :
- Réduisez la complexité du développement logiciel – en masquant les détails d’implémentation et en exposant uniquement les opérations, l’utilisation d’une classe devient facile.
- Protégez l'état interne d'un objet - l'accès aux variables de classe se fait via des méthodes telles que get et set, ce qui rend la classe flexible et facile à maintenir.
- L'implémentation interne de la classe peut être modifiée sans se soucier de casser le code qui utilise la classe.
- Droit des successions – cela concerne les relations entre les classes. La relation prend la forme d’un parent et d’un enfant. L'enfant utilise les méthodes définies dans la classe parent. Le but principal de l’héritage est :
- Réutilisabilité – un certain nombre d'enfants peuvent hériter du même parent. Ceci est très utile lorsque nous devons fournir des fonctionnalités communes telles que l'ajout, la mise à jour et la suppression de données de la base de données.
- Polymorphisme – il s’agit d’avoir un formulaire unique mais de nombreuses manières de mise en œuvre différentes. L'objectif principal du polymorphisme est :
- Simplifiez la maintenance des applications et rendez-les plus extensibles.
Oops Concepts en PHP
PHP est un langage de script orienté objet ; il prend en charge tous les principes ci-dessus. Les principes ci-dessus sont atteints via :
- Encapsulation – via l’utilisation des méthodes « get » et « set » etc.
- Droit des successions – via l’utilisation du mot-clé extends
- Polymorphisme – via l’utilisation du mot-clé Implements
Maintenant que nous avons les connaissances de base de la POO et de la façon dont elle est prise en charge dans PHP, regardons des exemples qui mettent en œuvre les principes ci-dessus
Qu'est-ce qu'UML ?
Le langage de modélisation unifié UML est une technique utilisée pour concevoir et documenter des systèmes orientés objet.
UML produit un certain nombre de documents, mais nous examinerons le diagramme de classes qui est très important pour la programmation PHP orientée objet.
Exemple de diagramme de classes
Clé du diagramme de classes
- La Boîte supérieure contient le nom de la classe
- La boîte du milieu contient les variables de classe
- La boîte inférieure contient les méthodes de classe
- La moins (-) signe signifie portée privée
- La plus (+) signe signifie portée publique
- La hachage (#) signe signifie portée protégée
Comment créer une classe en PHP
Le mot-clé class est utilisé pour définir une classe en PHP. Vous trouverez ci-dessous les règles de création d'une classe en PHP.
- Le nom de la classe doit commencer par une lettre
- Le nom de la classe ne peut pas être un mot réservé PHP
- Le nom de la classe ne peut pas contenir d'espaces
Disons que nous voulons créer une classe pour représenter les animaux.
Nous commencerons par identifier les caractéristiques communes à tous les animaux.
- Tous les animaux appartiennent à une famille comme les herbivores, les carnavaliers, etc.
- Tous les animaux mangent de la nourriture
Le schéma ci-dessous montre le schéma de l'animal
Codons maintenant notre classe d'animaux
<?php class Animal { private $family; private $food; public function __construct($family, $food) { $this->family = $family; $this->food = $food; } public function get_family() { return $this->family; } public function set_family($family) { $this->family = $family; } public function get_food() { return $this->food; } public function set_food($food) { $this->food = $food; } } ?>
ICI,
- « private $family, $food » signifie que les variables ne sont pas accessibles directement en dehors de la classe (Encapsulation).
- « fonction publique __construct($family…) » est la méthode de constructeur php. Cette fonction est appelée chaque fois qu'une instance de la classe a été créée. Dans ce cas, nous définissons la famille et la nourriture.
- « fonction publique get…() » est la méthode utilisée pour accéder à la valeur de la famille ou de l'aliment (Encapsulation)
- « public function set…() » est la méthode utilisée pour définir la valeur de la famille ou de l'aliment (Encapsulation)
Comment implémenter l'héritage en PHP
Nous travaillerons avec une vache et un lion. La vache et le lion héritent de la classe Animal.
Le diagramme de classes ci-dessous montre les relations.
Notez que la vache hérite de la classe animale et définit également ses propres variables et méthodes.
Codons maintenant la classe Cow
<?php class Cow extends Animal { private $owner; public function __construct($family, $food) { parent::__construct($family, $food); } public function set_owner($owner) { $this->owner = $owner; } public function get_owner() { return $this->owner; } } ?>
Codons maintenant la classe Lion
<?php class Lion extends Animal { public function __construct($family, $food) { parent::__construct($family, $food); } } ?>
ICI,
- « class… extends Animal » permet à la vache et au lion d'utiliser les méthodes de la classe Animal (héritage).
Comment créer un objet de la classe
Les classes Animal, Cow et Lion doivent toutes se trouver dans le même répertoire par souci de simplicité.
Créons maintenant l'application qui utilise nos classes.
Exemple de classe PHP
<?php require 'Animal.php'; require 'Cow.php'; require 'Lion.php'; $cow = new Cow('Herbivore', 'Grass'); $lion = new Lion('Canirval', 'Meat'); echo '<b>Cow Object</b> <br>'; echo 'The Cow belongs to the ' . $cow->get_family() . ' family and eats ' . $cow->get_food() . '<br><br>'; echo '<b>Lion Object</b> <br>'; echo 'The Lion belongs to the ' . $lion->get_family() . ' family and eats ' . $lion->get_food(); ?>
Tester notre application
Voyons maintenant notre application dans un navigateur Web
Fantastique, c'est vrai ! Examinons maintenant le troisième principe de la POO, le polymorphisme.
Disons que nous souhaitons développer une application qui se connecte à différents moteurs de bases de données tels que MySQL et SQL Serveur mais utilise la même interface uniforme.
Nous pouvons créer une interface qui définit les méthodes standard et une classe abstraite qui implémente les méthodes communes.
- Interface – c’est semblable à une classe. Il définit uniquement les méthodes et les paramètres.
- Classe abstraite – c’est une classe qui ne peut pas être utilisée pour créer directement un objet. Son objectif est de fournir des implémentations partielles ou totales de méthodes courantes.
Le diagramme de classes ci-dessous illustre la relation entre nos classes de classe abstraite, d'interface et d'implémentation.
Créons maintenant notre classe abstraite
<?php abstract class DBCommonMethods { private $host; private $db; private $uid; private $password; public function __construct($host, $db, $uid, $password) { $this->host = $host; $this->db = $db; $this->uid = $uid; $this->password = $password; } } ?>
ICI,
- "classe abstraite" signifie que la classe ne peut pas être utilisée directement pour créer un objet php
- « $host,$db… » sont des variables de classe communes à toutes les implémentations
- « function __construct(…) » est la méthode de constructeur de classe php qui définit les valeurs des variables communes à l'initialisation
Créons maintenant l'interface qui contient les méthodes standards qui seront implémentées différemment selon le moteur de base de données.
<?php interface DBInterface { public function db_connect(); public function insert($data); public function read($where); public function update($where); public function delete($where); } ?>
ICI,
- « interface » est le mot-clé pour créer des interfaces
- « fonction publique…(…) » sont les méthodes standards à mettre en œuvre
Créons maintenant les classes concrètes qui étendront la classe DBCommonMethods et étendront l'interface DBInterface. MySQLPilote.php
<?php class MySQLDriver extends DBCommonMethods implements DBInterface { public function __construct($host, $db, $uid, $password) { parent::__construct($host, $db, $uid, $password); } public function db_connect() { //connect code goes here } public function delete($where) { //delete code goes here } public function insert($data) { //insert code goes here } public function read($where) { //read code goes here } public function update($where) { //update code goes here } } ?>
MSSQLServerDriver.php
<?php class MSSQLServerDriver extends DBCommonMethods implements DBInterface { public function __construct($host, $db, $uid, $password) { parent::__construct($host, $db, $uid, $password); } public function db_connect() { //connect code goes here } public function delete($where) { //delete code goes here } public function insert($data) { //insert code goes here } public function read($where) { //read code goes here } public function update($where) { //update code goes here } } ?>
ICI,
- «classe… étend DBCommonMethods» utilise les méthodes de DBCommonMethods
- «… implémente DBInterface» garantit que la classe fournit des méthodes standard quel que soit le pilote de base de données utilisé.
Utilisation du code ci-dessus Le code utilisant la classe ci-dessus ressemblerait à ceci
<?php $db = new MySQLDriver($host,$db,$uid,$password); ?>
Or
<?php $db = new MSSQLServerDriver ($host,$db,$uid,$password); ?>
Le reste du code serait le même pour les deux pilotes tels que ;
<?php $db->db_connect(); $db->insert($data); ?>
Résumé
- Programmation orientée objet La POO est une technique puissante qui modélise les applications d'après des objets du monde réel.
- Une classe est une représentation d'objets du monde réel avec des propriétés et des méthodes
- Les trois principes de base de la POO sont :
- Encapsulation
- Droit des successions
- Polymorphisme