Exemples

Dans cet exemple, nous commençons par définir une classe de base ainsi qu'une extension de cette classe. La classe de base décrit un légume, s'il peut être consommé, et quelle est sa couleur. La sous-classe Spinach ajoute une méthode pour le cuisiner, et une autre pour déterminer s'il est cuit.

Exemple #1 Définitions des Classes

Vegetable

<?php
class Vegetable {
public
$edible;
public
$color;
public function
__construct($edible, $color = "green")
{
$this->edible = $edible;
$this->color = $color;
}
public function
isEdible()
{
return
$this->edible;
}
public function
getColor()
{
return
$this->color;
}
}
?>

Spinach

<?php
class Spinach extends Vegetable {
public
$cooked = false;
public function
__construct()
{
parent::__construct(true, "green");
}
public function
cook()
{
$this->cooked = true;
}
public function
isCooked()
{
return
$this->cooked;
}
}
?>

Nous créons ensuite deux objets depuis ces classes et affichons des informations sur ceux-ci, incluant leur classe parente. Nous définissons également des fonctions utilitaires, principalement afin d'obtenir un affichage plus joli des variables.

Exemple #2 test_script.php

<?php
// enregistrer l'autoloader pour charger les classes
spl_autoload_register();
function
printProperties($obj)
{
foreach (
get_object_vars($obj) as $prop => $val) {
echo
"\t$prop = $val\n";
}
}
function
printMethods($obj)
{
$arr = get_class_methods(get_class($obj));
foreach (
$arr as $method) {
echo
"\tfunction $method()\n";
}
}
function
objectBelongsTo($obj, $class)
{
if (
is_subclass_of($obj, $class)) {
echo
"L'objet appartient à la classe " . get_class($obj);
echo
", une sous-classe de $class\n";
} else {
echo
"L'objet n'appartient pas à une sous-classe de $class\n";
}
}
// instancier 2 objets
$veggie = new Vegetable(true, "blue");
$leafy = new Spinach();
// afficher des informations sur les objets
echo "veggie : CLASSE " . get_class($veggie) . "\n";
echo
"leafy : CLASSE " . get_class($leafy);
echo
", PARENT " . get_parent_class($leafy) . "\n";
// afficher les propriétés de veggie
echo "\nveggie : Propriétés\n";
printProperties($veggie);
// et les méthodes de leafy
echo "\nleafy : Méthodes\n";
printMethods($leafy);
echo
"\nParenté :\n";
objectBelongsTo($leafy, Spinach::class);
objectBelongsTo($leafy, Vegetable::class);
?>

Les exemples ci-dessus vont afficher :

veggie : CLASSE Vegetable
leafy : CLASSE Spinach, PARENT Vegetable
veggie : Propriétés
        edible = 1
        color = blue
leafy : Méthodes
        function __construct()
        function cook()
        function isCooked()
        function isEdible()
        function getColor()
Parenté :
L'objet n'appartient pas à une sous-classe de Spinach
L'objet appartient à la classe Spinach, une sous-classe de Vegetable

Une chose importante à noter dans l'exemple ci-dessus est que l'objet $leafy est une instance de la classe Spinach qui est une sous-classe de Vegetable.

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top