Easy-Micro

LANGAGE POO PHP Part 1
Constructeur

La programmation orientée objet en PHP : Le constructeur

Ajoutons un constructeur

Actuellement, la seule possibilité qui s'offre à vous est de modifier les attributs force, experience et degats manuellement, une fois l'objet créé. Il existe en PHP une méthode, appelée le constructeur, qui permet d'initialiser ces attributs dès la création de l'objet.

<?php

class Personnage {
  private $_force;
  private $_localisation;
  private $_experience;
  private $_degats;

  public function __construct($force, $degats) { // Constructeur demandant 2 paramètres
    echo 'Voici le constructeur !'; // Message s'affichant une fois que tout objet est créé.
    $this->setForce($force); // Initialisation de la force.
    $this->setDegats($degats); // Initialisation des dégâts.
    $this->_experience = 1; // Initialisation de l'expérience à 1.
  }
// ...
Le constructeur est toujours nommé __construct, avec deux underscores au début

Si des attributs doivent être initialisés ou qu'une connexion à la BDD doit être faite, c'est le constructeur qui s'en occupe.

Ici, le constructeur demande la force et les dégâts initiaux du personnage que l'on vient de créer. Il faudra donc lui spécifier ceci en paramètre :
<?php
// ...
$perso1 = new Personnage(60, 0); // 60 de force, 0 dégât
$perso2 = new Personnage(100, 10); // 100 de force, 10 dégâts
Le constructeur est toujours nommé __construct, avec deux underscores au début

Ne mettez jamais la méthode__construct avec le type de visibilité private car elle ne pourra jamais être appelée.

> Voir cet exemple Easy-Micro

L'auto-chargement de classes

Pour une question d'organisation, il vaut mieux créer un fichier par classe comme Personnage.php. Mais si vous avez plusieurs dizaines de classes, et plutôt que d'avoir des dizaines require 'MaClasse.php'; on utilise l'auto-chargement de classe en évitant les erreurs de chargement avec la fonctions pl_autoload_register :
<?php
function chargerClasse($classe) {
  require $classe . '.php'; // On inclut la classe correspondante au paramètre passé.
}

spl_autoload_register('chargerClasse'); // On enregistre la fonction en autoload pour qu'elle soit appelée dès qu'on instanciera une classe non déclarée.

$perso = new Personnage;
On enregistre la fonction en autoload pour qu'elle soit appelée dès qu'on instanciera une classe non déclarée

En PHP, il y a ce qu'on appelle une "pile d'autoloads". Cette pile contient une liste de fonctions. Chacune d'entre elles sera appelée automatiquement par PHP lorsque l'on essaye d'instancier une classe non déclarée. Nous avons donc ici ajouté notre fonction à la pile d'autoloads afin qu'elle soit appelée à chaque fois qu'on essaye d'instancier une classe non déclarée.

« Prev - POO PHP - Next »


< Page précédente POO PHP PART 1 Page suivante >