Php object
Introduction
Concrètement, un objet est une structure de données valuées et cachées qui répond à un ensemble de messages. Cette structure de données définit son état tandis que l'ensemble des messages qu'il comprend décrit son comportement :
- Les données — ou champs — qui décrivent sa structure interne sont appelées ses attributs ;
- L'ensemble des messages forme ce que l'on appelle l'interface de l'objet ; c'est seulement au travers de celle-ci que les objets interagissent entre eux. La réponse à la réception d'un message par un objet est appelée une méthode (méthode de mise en œuvre du message) ; elle décrit quelle réponse doit être donnée au message.
Certains attributs et/ou méthodes (ou plus exactement leur représentation informatique) sont cachés : c'est le principe d'encapsulation. Ainsi, le programme peut modifier la structure interne des objets ou leurs méthodes associées sans avoir d'impact sur les utilisateurs de l'objet.
Implémentation
Définition
La définition d'un objet en PHP se fait grâce au mot clé class. Nous allons placer le code suivant dans un fichier nommé Rectangle.class.php (notez le .class.php).
class Rectangle{
...
}
Les attributs
L'objet précédent est vide, nous allons lui ajouter quelques attributs:
class Rectangle {
public $x, $y, $largeur, $hauteur;
...
}
Constructeur
Le constructeur est la méthode qui permet de créer l'objet lorsque l'on utilise le mot clé new (que nous verrons plus tard).
public function Rectangle($x, $y, $largeur, $hauteur){
$this->x = $x;
$this->y = $y;
$this->largeur = $largeur;
$this->hauteur = $hauteur;
}
A partir de maintenant on peut instancier notre objet rectangle, quoique, il ne sait pas faire grand chose pour le moment.
Ajout d'une méthode
Nous allons doter notre objet Rectangle de la capacité de se dessiner. Pour cela nous allons ajouter une fonction draw qui renverra la chaîne de caractères représentant le rectangle.
class Rectangle {
...
public function draw() {
$result = "";
for($i = 1; $i < $this->y; $i ++) {
$result += ".<br/>";
}
for($i = 0; $i < $this->hauteur; $i ++) {
for($j = 1; $j < $this->x; $j ++) {
$result += ".";
}
for($j = 0; $j < $this->largeur; $j ++) {
$result += "*";
}
$result += "<br/>";
}
return $result;
}
}
Appel de l'objet
Créons une page PHP nommé main.php qui appellera notre objet et affichera le rendu
<?php
include __DIR__.'/Rectangle.class.php';
$rectangle = new Rectangle(5, 3, 19, 9);
echo $rectangle->draw();
?>
Et voici le résultat:
# php -f main.php
.
.
....*******************
....*******************
....*******************
....*******************
....*******************
....*******************
....*******************
....*******************
....*******************