Cours par Webcam

Cours par Webcam

Formateur Web pour adultes depuis plus 11 ans, je vous propose des COURS collectifs par WEBCAM en LIVE pour booster vos connaissances et être autonome dans la création de site.

En savoir plus

PHP - Bases

PHP - Algorithmie

PHP - Chaîne

PHP - Tableau

PHP - Formulaires

PHP - Fonctions Usuelles

Données entres pages

Environnement et Interaction

PHP objet (POO)

Facebook
Twitter
LinkedIn

La POO, les méthodes magiques

PHP propose des fonctions prédéfinies utiles dans la programmation objet :

Constructeur : __construct(). Cette méthode est appelée au moment de la création de l’objet.

class Soda{
    public $marque;
    function __construct($marque) {
        $this->marque = $marque;
    }
}
$mabouteille = new Soda('coca');
echo $mabouteille->marque;

Affichage

coca

Destructeur : __destruct(). Cette méthode est appelée au moment de la destruction de l’objet. Cette méthode ne doit pas avoir d’argument.

class Soda{
    public $marque;
    function __construct($marque) {
        $this->marque = $marque;
    }
    function __destruct() {
        echo "référence détruite";
    }
}
$mabouteille = new Soda('coca');
echo $mabouteille->marque;
echo '<br>';
$mabouteille = null; // on détruit la référence

Affichage

coca
référence détruite

Surcharge : __set(). Cette méthode est appelée au moment de la création d’une propriété dynamique de l’objet.

class Soda{
    public $marque;
    private $prop = [];
    function __construct($marque) {
        $this->marque = $marque;
    }
    function __set($name, $value) {
        $this->prop[$name] = $value;
    }
}
$mabouteille = new Soda('coca');
echo $mabouteille->volume = '2L';
echo $mabouteille->volume;

Affichage

2L

Surcharge : __get(). Cette méthode est appelée au moment de la consultation d’une propriété créée dynamiquement sur l’objet.

class Soda{
    public $marque;
    private $prop = [];
    function __construct($marque) {
        $this->marque = $marque;
    }
    function __get($name) {
        echo "Récupération de la proriété $name";
        if (array_key_exists($name, $this->prop)) {
            echo $this->prop[$name];
        }else{
            echo "<br>propriété non existante";
        }
    }
}
$mabouteille = new Soda('coca');
echo $mabouteille->volume;

Affichage

Récupération de la proriété volume
propriété non existante

Linéarisation : __sleep(). Cette méthode est appelée avant toute linéarisation (conversion de données en chaîne avec la fonction serialize() ). Son rôle et de retourner un tableau avec les noms de toutes les variables de l’objet qui doivent être linéarisées .

class Soda{
    public $marque;
    private $prop = [];
    function __construct($marque) {
        $this->marque = $marque;
    }
    function __sleep() {
        echo 'objet sérialisé';
        return array('dsn', 'username', 'password');
    }
}
$mabouteille = new Soda('coca');
$serialisation = serialize($mabouteille); // sérialisation

Affichage

objet sérialisé

Linéarisation : __wakeup(). Cette méthode est réciproque à __sleep() et est appelée pour la reconstruction des données (avec la fonction unserialize() )

class Soda{
    public $marque;
    private $prop = [];
    function __construct($marque) {
        $this->marque = $marque;
    }
    function __sleep() {
        echo 'objet sérialisé';
        return array('dsn', 'username', 'password');
    }
    function __wakeup() {
        echo '<br>objet reconstruit';
    }
}
$mabouteille = new Soda('coca');
$serialisation = serialize($mabouteille);
unserialize($serialisation); // reconstruction

Affichage

objet sérialisé
objet reconstruit

Conversion : __toString(). Cette méthode est appelée lorque l’objet est traitée comme une chaîne (echo $maVoiture, par exemple).

class Soda{
    public $marque;
    private $prop = [];
    function __construct($marque) {
        $this->marque = $marque;
    }
    function __toString() {
        return $this->marque;
    }
}
$mabouteille = new Soda('coca');
echo $mabouteille;

Affichage

coca

Méthodes inaccessibles : __call(). Cette méthode est appelée lorsque vous appelez une méthode qui n’existe pas sur une objet.

class Soda{
    public $marque;
    private $prop = [];
    function __construct($marque) {
        $this->marque = $marque;
    }
    public function __call($name, $arguments){
        echo "Appel de la méthode '$name' - arguments : "
             . implode(', ', $arguments);
    }
 
}
$mabouteille = new Soda('coca');
echo $mabouteille->donneVolume('litre');

Affichage

Appel de la méthode 'donneVolume' - arguments : litre

Méthodes inaccessibles : __callStatic(). Cette méthode est appelée lorsque vous appelez une méthode qui n’existe pas dans un contexte statique (méthode appelée directement à partir de la classe sans passer par l’objet).

class Soda{
    public $marque;
    private $prop = [];
    function __construct($marque) {
        $this->marque = $marque;
    }
    public static function __callStatic($name, $arguments){
        echo "Appel de la méthode static '$name' - arguments : "
             . implode(', ', $arguments);
    }
 
}
Soda::donneVolume('litre');

Affichage

Appel de la méthode static 'donneVolume' - arguments : litre

A lire aussi

tutowebdesign

Afficher du contenu au scroll

Afficher du contenu au scroll Voici un effet impressionnant et pourtant très facile à mettre en place sur vos pages. Le principe consiste à faire

Lire »