logo oujood
🔍

Les Classes en Programmation Orientée Objet PHP

OUJOOD.COM

PHP cours tutorial

Qu'est-ce qu'une classe en PHP ?

Les classes sont des usines à fabriquer des objets. On crée une classe pour définir un type d'objet et, à partir de cette classe, on peut créer autant d'instances (objets) qu'on le souhaite.

Une classe est un modèle de données définissant la structure commune à tous les objets qui seront créés à partir d'elle. C'est un plan de construction, un blueprint qui spécifie les propriétés et les comportements que partageront tous les objets de ce type.

Plus précisément, une classe est un moule grâce auquel nous créons autant d'objets de même type et de même structure que nécessaire. Chaque objet créé à partir d'une classe possèdera les mêmes caractéristiques (attributs) et les mêmes capacités (méthodes).

Une classe est une entité regroupant des variables (appelées attributs ou propriétés) et des fonctions (appelées méthodes). Ces éléments sont liés logiquement et travaillent ensemble pour représenter un concept ou une entité du monde réel.

Chacune de ces méthodes peut accéder aux attributs de cette entité, ce qui permet de manipuler l'état interne de l'objet de manière cohérente et sécurisée.

Dans le cas du véhicule évoqué dans le chapitre précédent, nous aurons par exemple une méthode rouler(). Cette méthode modifie les attributs $carburant et $compteur du véhicule en fonction de la distance parcourue.

Une classe est donc un regroupement logique de variables et de fonctions que tout objet créé à partir de cette classe possèdera automatiquement. C'est ce qui assure la cohérence et la réutilisabilité du code.

On peut donc utiliser cette classe n'importe où dans nos pages Web pour créer des objets, favorisant ainsi la modularité et la maintenance du code.

Comment créer une classe en PHP

Dans ce qui suit, nous allons voir comment créer une classe, la structurer correctement et l'utiliser efficacement dans vos projets PHP.

Déclaration d'une classe en PHP

Le code suivant présente la manière de déclarer et de structurer une classe en PHP. Nous vous recommandons fortement de suivre ces conventions d'écriture pour garantir la lisibilité et la maintenabilité de votre code.

Syntaxe de base :

Nous vous conseillons vivement de suivre ces conventions d'écriture pour une meilleure clarté et organisation du code.

<?php

class NomDeMaClasse
{
  // Attributs ou propriétés (les variables)
  // Ces variables décrivent l'état de l'objet

  // Constantes
  // Valeurs immuables accessibles sans instanciation

  // Méthodes (les fonctions)
  // Actions que l'objet peut effectuer
}

?>

Cette syntaxe est à retenir absolument. Le nom de la classe doit commencer par une majuscule et suivre la convention PascalCase (chaque mot commence par une majuscule).

En conclusion :

Une classe est un type abstrait de données caractérisé par des propriétés (attributs et méthodes) communes à ses objets, et un mécanisme permettant de créer des objets ayant ces propriétés.

classe = instanciation + attributs (variables d'instances) + méthodes

L'instanciation :
Processus de création d'un objet à partir d'une classe. Chaque objet possède une identité unique qui permet de le distinguer des autres objets, indépendamment de son état.
L'instanciation représente la relation entre un objet et sa classe d'appartenance qui a permis de le créer.
Les attributs (appelés aussi propriétés ou variables d'instances) :
Ils ont un nom et soit un type de base (entier, chaîne, booléen, etc.), soit une classe (référence un objet de la même classe ou d'une autre classe). Les attributs définissent l'état d'un objet.
Les méthodes :
Ce sont les fonctions (opérations) applicables à un objet de la classe. Elles peuvent modifier tout ou partie de l'état d'un objet et retourner des valeurs calculées à partir de cet état. Les méthodes définissent le comportement d'un objet.

La visibilité d'un attribut ou d'une méthode

La visibilité d'un attribut ou d'une méthode indique à partir de quel endroit du code on peut accéder à cette propriété ou ce comportement. C'est un concept fondamental de l'encapsulation, l'un des piliers de la POO.

Nous allons voir ici les trois principaux types de visibilité : public, private et protected.

1) Public : C'est la visibilité la plus permissive. Si un attribut ou une méthode est public, on peut y accéder depuis n'importe où : aussi bien depuis l'intérieur de l'objet (dans les méthodes de la classe) que depuis l'extérieur (dans le code qui utilise la classe).

Explication :

Quand on crée un objet, c'est principalement pour pouvoir exploiter ses attributs et méthodes publics. Ces éléments constituent l'interface publique de la classe, c'est-à-dire ce que les utilisateurs de la classe peuvent manipuler.

L'extérieur de l'objet, c'est tout le code qui n'est pas dans votre classe, c'est-à-dire qui n'est pas entre les accolades de votre classe. C'est là où vous instanciez et utilisez vos objets.

L'intérieur de l'objet, c'est le contraire : c'est tout le code qui est dans votre classe, c'est-à-dire entre les accolades de votre classe. C'est là où vous définissez le comportement interne de vos objets.

<?php

class MaClasse
{
  // INTÉRIEUR DE LA CLASSE
  // Code accessible uniquement par la classe elle-même
}

// EXTÉRIEUR DE LA CLASSE
// Code qui utilise la classe

?>

2) Private : Cette visibilité impose des restrictions importantes. On n'aura accès aux attributs et méthodes que depuis l'intérieur de la classe. Seul le code écrit entre les accolades de la classe peut accéder à un attribut ou une méthode privé(e). Si vous tentez d'y accéder depuis l'extérieur, une erreur fatale s'affichera indiquant que l'accès est interdit.

3) Protected : Visibilité intermédiaire qui sera abordée dans le chapitre sur l'héritage. Les éléments protected sont accessibles depuis la classe elle-même et ses classes filles.

Les attributs d'un objet

Les attributs (ou propriétés) sont les caractéristiques propres d'un objet. Ils représentent l'état de l'objet à un instant donné. Par exemple, pour une voiture, la couleur, le niveau de carburant ou le kilométrage sont des attributs.

Pour déclarer des attributs, on les écrit entre les accolades de la classe, les uns à la suite des autres, en faisant précéder leurs noms d'un modificateur de visibilité (private, public ou protected). Il est recommandé d'utiliser private par défaut pour respecter le principe d'encapsulation.

Nous avons vu dans le cours précédent l'exemple d'un objet véhicule.

Ses caractéristiques sont :

  • Le nombre de roues
  • Le nombre de portes
  • La quantité de carburant
  • Le compteur kilométrique

Cet exemple nous donne la classe Vehicule suivante :

<?php

class Vehicule
{
  // Attributs (les variables) de notre véhicule
  private $roue = 4;
  // Le nombre de roues du véhicule par défaut est 4

  private $porte;
  private $carburant;
  private $compteur;

  // Les méthodes seront définies ci-dessous
}

?>

Vous pouvez initialiser les attributs lors de leur déclaration en leur donnant une valeur par défaut, comme nous l'avons fait pour le nombre de roues dans l'exemple précédent. Cette valeur sera automatiquement assignée à chaque nouvel objet créé.

Les méthodes d'un objet

Les méthodes sont les actions que l'on peut appliquer à un objet. Il s'agit de fonctions qui peuvent prendre ou non des paramètres et retourner ou non des valeurs ou des objets. Les méthodes définissent le comportement de l'objet.

Pour déclarer une méthode, il suffit de faire précéder le mot-clé function d'un modificateur de visibilité (public, private ou protected).

Les méthodes n'ont en général pas besoin d'être masquées à l'utilisateur de la classe. Vous les déclarerez généralement en public, sauf si vous souhaitez créer des méthodes utilitaires internes qui ne doivent pas être appelées de l'extérieur.

<?php

class Vehicule
{
  // Attributs (les variables) de notre véhicule
  private $roue = 4;
  // Le nombre de roues du véhicule par défaut est 4

  private $porte;
  private $carburant;
  private $compteur;

  // Méthodes (les fonctions)
  public function deplacer($distance)
  {
    // Cette méthode déplace le véhicule
    // Elle modifie les attributs $compteur et $carburant
    $this->compteur += $distance;
    $this->carburant -= $distance * 0.05;
  }

  public function faireLePlein()
  {
    // Remplit le réservoir de carburant
    $this->carburant = 50;
  }
}

?>

Les constantes d'une classe

Il est également possible de déclarer des constantes propres à la classe. Contrairement à la programmation procédurale où l'on utilise la fonction define(), en programmation orientée objet, une constante est déclarée avec le mot-clé const.

Remarque importante : une constante doit être déclarée et initialisée avec sa valeur en même temps. Sa valeur ne pourra plus être modifiée par la suite.

Les constantes de classe sont utiles pour définir des valeurs qui ne changeront jamais, comme des limites, des codes d'erreur ou des valeurs de configuration spécifiques à la classe.

Nous approfondirons ce sujet dans un chapitre ultérieur consacré aux constantes et à leurs utilisations avancées en POO.


Par carabde | Mis à jour le 20 Août 2014