Programmation Orientée Objet en PHP
Concepts de Programmation Orientée Objet
La programmation orientée objet (POO) est un paradigme de programmation qui utilise des "objets" pour concevoir des applications et des logiciels. Ces objets sont des instances de classes, qui peuvent contenir des données sous forme de champs, également appelés attributs ; et du code, sous forme de procédures, également appelées méthodes. Les principaux principes de la POO sont l'encapsulation, l'héritage et le polymorphisme.
Définir des Classes en PHP
En PHP, vous définissez une classe en utilisant le mot-clé class
. Une classe est un plan pour créer des objets. Elle définit un ensemble de propriétés et de méthodes communes à tous les objets d'un type.
class Voiture {
// Propriétés et méthodes de la classe ici
}
Créer des Objets en PHP
Pour créer un objet à partir d'une classe, vous utilisez le mot-clé new
suivi du nom de la classe.
$maVoiture = new Voiture();
Appeler des Fonctions Membres
Les fonctions membres sont définies à l'intérieur d'une classe et sont utilisées pour effectuer des opérations sur les propriétés de l'objet. Vous appelez une fonction membre sur un objet en utilisant l'opérateur d'objet ->
.
$maVoiture->rouler(); // Appelle la méthode roulert sur l'objet $maVoiture
Fonctions Constructrices
Un constructeur est une méthode spéciale qui est automatiquement appelée lorsque un objet est créé à partir d'une classe. Elle est utilisée pour initialiser les propriétés de l'objet.
class Voiture {
public function __construct() {
// Initialiser les propriétés ici
}
}
Destructeur
Un destructeur est une méthode spéciale qui est automatiquement appelée lorsque un objet est détruit ou sort de portée. Elle est utilisée pour effectuer des tâches de nettoyage telles que la fermeture de connexions à la base de données ou la libération de la mémoire.
class Voiture {
public function __destruct() {
// Tâches de nettoyage ici
}
}
Héritage
L'héritage permet à une classe de hériter des propriétés et des méthodes d'une autre classe. La classe héritée est appelée la classe parent, et la classe qui hérite est appelée la classe enfant.
class VoitureElectrique extends Voiture {
// VoitureElectrique hérite des propriétés et des méthodes de Voiture
}
Remplacement de Fonction
Le remplacement de fonction permet à une classe enfant de fournir une implémentation différente d'une méthode déjà définie dans sa classe parent.
class VoitureElectrique extends Voiture {
public function roulert() {
// Implémentation différente de la méthode roulert
}
}
Membres Publics
Les membres publics sont accessibles depuis n'importe où, à l'intérieur comme à l'extérieur de la classe.
class Voiture {
public $couleur; // Propriété publique
public function roulert() { // Méthode publique
// Code ici
}
}
Membres Privés
Les membres privés ne sont accessibles qu'à l'intérieur de la classe où ils sont définis. Ils ne peuvent pas être accédés depuis l'extérieur de la classe.
class Voiture {
private $couleur; // Propriété privée
private function roulert() { // Méthode privée
// Code ici
}
}
Membres Protégés
Les membres protégés sont accessibles à l'intérieur de la classe où ils sont définis et à l'intérieur de toutes les sous-classes.
class Voiture {
protected $couleur; // Propriété protégée
protected function roulert() { // Méthode protégée
// Code ici
}
}
Interfaces
Une interface est un contrat qui définit un ensemble de méthodes que une classe doit implémenter. Si une classe implémente une interface, elle promet de fournir une implémentation pour toutes les méthodes déclarées dans l'interface.
interface Conductible {
public function roulert(); // Déclaration de méthode
}
class Voiture implements Conductible {
public function roulert() {
// Implémentation de la méthode roulert
}
}
Constantes
Les constantes sont des valeurs nommées qui ne peuvent pas être modifiées une fois définies. Elles sont utiles pour définir des valeurs qui ne devraient pas changer tout au long de l'exécution du programme.
class Voiture {
const VITESSE_MAX = 100; // Valeur constante
}
Classes Abstraites
Une classe abstraite est une classe qui ne peut pas être instanciée et est destinée à être étendue par d'autres classes. Elle peut contenir des méthodes abstraites, qui sont des méthodes sans implémentation, et des méthodes concrètes avec une implémentation.
abstract class Vehicule {
abstract public function bouger(); // Méthode abstraite
public function stopper() { // Méthode concrète
// Code ici
}
}
Mot-clé Statique
Le mot-clé static
est utilisé pour déclarer des propriétés ou des méthodes appartenant à la classe elle-même plutôt qu'à une instance de la classe. Les membres statiques peuvent être accédés sans créer un objet de la classe.
class Voiture {
public static $compte = 0; // Propriété statique
public static function getCompte() { // Méthode statique
return self::$compte;
}
}
Mot-clé Final
Le mot-clé final
est utilisé pour empêcher une classe d'être étendue, ou une méthode d'être remplacée.
final class Voiture {
// Cette classe ne peut pas être étendue
}
Appel des Constructeurs Parent
Lors de la création d'une classe enfant, vous pourriez vouloir appeler le constructeur de la classe parent pour initialiser certaines de ses propriétés. Vous pouvez faire cela en utilisant le mot-clé parent
suivi de l'opérateur ::
et du nom du constructeur.
class VoitureElectrique extends Voiture {
public function __construct() {
parent::__construct(); // Appel du constructeur parent
// Initialisation supplémentaire ici
}
}
Credits: Image by storyset