Les classes sont une unité d'organisation du code en PHP.
Le code qui décrit le comportement d'un élément ou d'un processus peut être regroupé dans une classe.
Les fonctions rattachées à une classe sont appelées methods par convention.
<?php
class Door
{
function lock()
{
// ...
}
function unlock()
{
// ...
}
}
Les classes s'instancient avec le mot-clé new, ce qui alloue la mémoire nécessaire à l'instance de la classe et appelle la méthode constructeur de la classe.
Une classe instanciée peut être affectée à une variable.
Pour appeler les méthodes d'une instance de classe, on peut utiliser l'opérateur d'accès ->.
<?php
$a_door = new Door();
$a_door->lock();
$a_door->unlock();
Une classe instanciée peut faire référence à sa propre instance grâce à la variable spéciale $this.
Les classes peuvent aussi avoir des propriétés : celles-ci se comportent comme des variables liées à l'instance de l'objet de la classe.
Ces propriétés peuvent être référencées depuis l'intérieur ou depuis l'extérieur de la classe.
<?php
class Car
{
public $color;
function __construct($color)
{
$this->color = $color;
}
function getColor()
{
return $this->color;
}
}
$a_car = new Car("red");
$a_car->color; // => "red" by accessing the property
$a_car->getColor(); // => "red" by invoking the instance method
Dans cet exercice, on va simuler un système informatique à base de fenêtres. Tu vas créer des fenêtres que l'on peut déplacer et redimensionner. L'image suivante illustre les valeurs avec lesquelles tu vas travailler ci-dessous.
╔════════════════════════════════════════════════════════════╗
║ ║
║ position::$y,_ ║
║ position::$x \ ║
║ \<---- size::$width ----> ║
║ ^ *──────────────────────┐ ║
║ | │ title │ ║
║ | ├──────────────────────┤ ║
║ | │ │ ║
║ size::$height │ │ ║
║ | │ contents │ ║
║ | │ │ ║
║ | │ │ ║
║ v └──────────────────────┘ ║
║ ║
║ ║
╚════════════════════════════════════════════════════════════╝
À l'aide du squelette de classe fourni, définis les propriétés correspondant aux valeurs y, x, height et width.
<?php
$window = new ProgramWindow();
$window->y; // => null
$window->x; // => null
$window->height; // => null
$window->width; // => null
Définis une fonction constructeur pour ProgramWindow.
Elle ne doit prendre aucun argument, mais pendant l'exécution du constructeur, définis les valeurs par défaut de ses propriétés.
Elle doit initialiser les valeurs y et x à 0.
Elle doit initialiser height et width à une taille d'écran de 600x800.
<?php
$window = new ProgramWindow();
$window->y; // => 0
$window->x; // => 0
$window->height; // => 600
$window->width; // => 800
Définis une nouvelle classe dans Size.php pour une classe Size.
Elle doit prendre des arguments de constructeur pour définir les propriétés height et width.
De plus, ProgramWindow nécessite une fonction de redimensionnement, qui reçoit l'instance de l'objet Size et met à jour ses propres propriétés.
<?php
$window = new ProgramWindow();
$size = new Size(764, 1080);
$window->resize($size)
$window->height;
// => 764
$window->width;
// => 1080
Définis une nouvelle classe dans Position.php pour une classe Position.
Elle doit prendre des arguments de constructeur pour définir les propriétés y et x.
De plus, ProgramWindow nécessite une fonction de déplacement, qui reçoit l'instance de l'objet Position et met à jour ses propres propriétés.
<?php
$window = new ProgramWindow();
$position = new Position(80, 313);
$window->move($position)
$window->y;
// => 80
$window->x;
// => 313
Inscris-toi sur Exercism pour apprendre et maîtriser PHP avec 11 concepts122 exercices, et un vrai mentorat humain, le tout gratuitement.