PHP - Classes and Objects

Bienvenue, futurs programmeurs ! Aujourd'hui, nous plongeons dans le monde passionnant des classes et objets en PHP. Ne vous inquiétez pas si ces termes semblent un peu intimidants - d'ici la fin de cette leçon, vous serez capables de créer vos propres classes et objets comme un pro !

PHP - Classes and Objects

Quelles sont les Classes et les Objets ?

Avant de nous lancer dans le code, comprens ce que sont les classes et les objets. Imaginez que vous construisez une maison. La classe serait comme le plan de la maison, tandis que l'objet serait la maison réelle construite à partir de ce plan. Vous pouvez créer de nombreuses maisons (objets) à partir d'un seul plan (classe).

Définir une Classe en PHP

Commençons par créer notre première classe PHP. Nous allons créer une classe simple Car.

<?php
class Car {
// Propriétés de la classe
public $brand;
public $color;

// Méthode de la classe
public function startEngine() {
return "Vroom ! La $this->color $this->brand démarre.";
}
}
?>

Reprenons cela :

  1. Nous commençons avec le mot-clé class, suivi du nom de notre classe (dans ce cas, Car).
  2. À l'intérieur de la classe, nous définissons des propriétés (variables) comme $brand et $color.
  3. Nous définissons également une méthode (fonction) appelée startEngine().

Créer des Objets à partir d'une Classe

Maintenant que nous avons notre classe Car, créons quelques objets de voiture !

<?php
// Création des objets de voiture
$myCar = new Car();
$myCar->brand = "Toyota";
$myCar->color = "Rouge";

$friendsCar = new Car();
$friendsCar->brand = "Honda";
$friendsCar->color = "Bleu";

// Utilisation de la méthode de l'objet
echo $myCar->startEngine();
echo $friendsCar->startEngine();
?>

Sortie :

Vroom ! La Rouge Toyota démarre.
Vroom ! La Bleu Honda démarre.

Voici ce qui se passe :

  1. Nous utilisons le mot-clé new pour créer des objets à partir de notre classe Car.
  2. Nous définissons les propriétés de chaque objet en utilisant l'opérateur flèche (->).
  3. Nous appelons la méthode startEngine() sur chaque objet.

Méthode Constructeur

Faisons maintenant notre classe un peu plus sophistiquée en ajoutant un constructeur. Un constructeur est une méthode spéciale qui est appelée lorsque un objet est créé.

<?php
class Car {
public $brand;
public $color;

// Constructeur
public function __construct($brand, $color) {
$this->brand = $brand;
$this->color = $color;
}

public function startEngine() {
return "Vroom ! La $this->color $this->brand démarre.";
}
}

// Création des objets de voiture avec le constructeur
$myCar = new Car("Toyota", "Rouge");
$friendsCar = new Car("Honda", "Bleu");

echo $myCar->startEngine();
echo $friendsCar->startEngine();
?>

Le constructeur nous permet de définir la brand et la color lorsque nous créons l'objet, rendant notre code plus propre et plus efficace.

Héritage

L'une des fonctionnalités puissantes de la POO est l'héritage. Il nous permet de créer une nouvelle classe basée sur une classe existante. Créons une classe ElectricCar qui hérite de notre classe Car.

<?php
class ElectricCar extends Car {
public $batteryLife;

public function __construct($brand, $color, $batteryLife) {
parent::__construct($brand, $color);
$this->batteryLife = $batteryLife;
}

public function chargeBattery() {
return "La $this->color $this->brand est en charge. Vie actuelle de la batterie : $this->batteryLife%";
}
}

$teslaModel3 = new ElectricCar("Tesla", "Blanc", 80);
echo $teslaModel3->startEngine();
echo $teslaModel3->chargeBattery();
?>

Sortie :

Vroom ! La Blanc Tesla démarre.
La Blanc Tesla est en charge. Vie actuelle de la batterie : 80%

Ici, ElectricCar hérite de toutes les propriétés et méthodes de Car, et ajoute sa propre propriété ($batteryLife) et méthode (chargeBattery()).

Modificateurs d'Accès

En POO, nous pouvons contrôler la visibilité des propriétés et des méthodes en utilisant des modificateurs d'accès. Il y en a trois :

Modificateur Description
public Accessible depuis n'importe où
protected Accessible à l'intérieur de la classe et par les classes dérivées
private Accessible uniquement à l'intérieur de la classe

Modifions notre classe Car pour utiliser ceux-ci :

<?php
class Car {
protected $brand;
private $engineStarted = false;

public function __construct($brand) {
$this->brand = $brand;
}

public function startEngine() {
$this->engineStarted = true;
return "Le moteur de la $this->brand est maintenant en marche.";
}

public function isEngineRunning() {
return $this->engineStarted;
}
}

$myCar = new Car("Toyota");
echo $myCar->startEngine();
echo $myCar->isEngineRunning() ? "Moteur en marche" : "Moteur arrêté";
// Cela provoquerait une erreur : echo $myCar->engineStarted;
?>

Maintenant, $brand est protégé (accessible dans les classes filles), $engineStarted est privé (accessible uniquement dans la classe Car), et nos méthodes restent publiques.

Conclusion

Félicitations ! Vous avez刚刚迈出了进入PHP面向对象编程世界的第一步。我们已经涵盖了类、对象、constructeurs, héritage et modificateurs d'accès. Ces concepts forment la base de la POO et vous serviront bien comme vous continuez votre parcours de programmation.

Souvenez-vous, la pratique fait parfait. Essayez de créer vos propres classes, expérimentez avec différentes propriétés et méthodes, et n'ayez pas peur de faire des erreurs - c'est ainsi que nous apprenons ! Bon codage !

Credits: Image by storyset