PHP OOP - Classes et objets
Une classe est un modèle pour les objets et un objet est une instance de classe.
Cas POO
Supposons que nous ayons une classe nommée Fruit. Un fruit peut avoir des propriétés comme le nom, la couleur, le poids, etc. Nous pouvons définir des variables comme $name, $color et $weight pour contenir les valeurs de ces propriétés.
Lorsque les objets individuels (pomme, banane, etc.) sont créés, ils héritent de toutes les propriétés et comportements de la classe, mais chaque objet aura des valeurs différentes pour les propriétés.
Définir une classe
Une classe est définie en utilisant le mot- class
clé, suivi du nom de la classe et d'une paire d'accolades ({}). Toutes ses propriétés et méthodes vont à l'intérieur des accolades :
Syntaxe
<?php
class Fruit {
// code goes here...
}
?>
Ci-dessous, nous déclarons une classe nommée Fruit composée de deux propriétés ($name et $color) et de deux méthodes set_name() et get_name() pour définir et obtenir la propriété $name :
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
?>
Remarque : Dans une classe, les variables sont appelées propriétés et les fonctions sont appelées méthodes !
Définir des objets
Les classes ne sont rien sans objets ! Nous pouvons créer plusieurs objets à partir d'une classe. Chaque objet a toutes les propriétés et méthodes définies dans la classe, mais elles auront des valeurs de propriété différentes.
Les objets d'une classe sont créés à l'aide du mot- new
clé.
Dans l'exemple ci-dessous, $apple et $banana sont des instances de la classe Fruit :
Exemple
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');
echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>
Dans l'exemple ci-dessous, nous ajoutons deux autres méthodes à la classe Fruit, pour définir et obtenir la propriété $color :
Exemple
<?php
class Fruit {
// Properties
public $name;
public $color;
// Methods
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
function set_color($color) {
$this->color = $color;
}
function get_color() {
return $this->color;
}
}
$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>
PHP - Le mot-clé $this
Le mot-clé $this fait référence à l'objet courant et n'est disponible qu'à l'intérieur des méthodes.
Regardez l'exemple suivant :
Exemple
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
?>
Alors, où pouvons-nous changer la valeur de la propriété $name ? Il existe deux façons :
1. À l'intérieur de la classe (en ajoutant une méthode set_name() et en utilisant $this) :
Exemple
<?php
class Fruit {
public $name;
function set_name($name) {
$this->name = $name;
}
}
$apple = new Fruit();
$apple->set_name("Apple");
echo $apple->name;
?>
2. En dehors de la classe (en modifiant directement la valeur de la propriété) :
Exemple
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
echo $apple->name;
?>
PHP - instance de
Vous pouvez utiliser le instanceof
mot clé pour vérifier si un objet appartient à une classe spécifique :
Exemple
<?php
$apple = new Fruit();
var_dump($apple instanceof
Fruit);
?>