Le chainage de méthodes en PHP

Dans cette nouvelle leçon, nous allons découvrir ce qu’est le chainage de méthodes en PHP et apprendre à chainer des méthodes en pratique.

 

Principe et intérêt du chainage de méthodes en POO PHP

Chainer des méthodes nous permet d’exécuter plusieurs méthodes d’affilée de façon simple et plus rapide, en les écrivant à la suite les unes des autres, « en chaine ».

En pratique, il va suffire d’utiliser l’opérateur d’objet pour chainer différentes méthodes. On écrira quelque chose de la forme $objet->methode1()->methode2().

Cependant, pour pouvoir utiliser le chainage de méthodes, il va falloir que nos méthodes chainées retournent notre objet afin de pouvoir exécuter la méthode suivante. Dans le cas contraire, une erreur sera renvoyée.

 

Le chaînage de méthodes en pratique

Prenons immédiatement un exemple afin de bien comprendre comment fonctionne le chainage de méthodes.

Pour cela, nous allons nous appuyer sur notre classe Utilisateur créée dans la partie précédente et à laquelle nous allons ajouter deux méthodes.

<?php
    abstract class Utilisateur{
        protected $user_name;
        protected $user_region;
        protected $prix_abo;
        protected $user_pass;
        protected $x = 0;
        public const ABONNEMENT = 15;
        
        public function __destruct(){
            //Du code à exécuter
        }
        
        abstract public function setPrixAbo();
        
        public function getNom(){
            echo $this->user_name;
        }

        public function getPrixAbo(){
            echo $this->prix_abo;
        }
        
        public function plusUn(){
            $this->x++;
            echo '$x vaut ' .$this->x. '<br>';
            return $this;
        }
        public function moinsUn(){
            $this->x--;
            echo '$x vaut ' .$this->x. '<br>';
            return $this;
        }
    }
?>

Ici, on commence par initialiser une propriété $x à zéro puis on crée deux nouvelles méthodes de classe plusUn() et moinsUn() dont le rôle est d’ajouter ou d’enlever un à la valeur de $x puis d’afficher un message avec la nouvelle position de notre objet.

<!DOCTYPE html>
<html>
    <head>
        <title>Cours PHP & MySQL</title>
        <meta charset="utf-8">
        <link rel="stylesheet" href="cours.css">
    </head>
    
    <body>
        <h1>Titre principal</h1>
        <?php
            require 'classes/utilisateur.class.php';
            require 'classes/admin.class.php';
            require 'classes/abonne.class.php';
            
            $pierre = new Admin('Pierre', 'abcdef', 'Sud');
            $mathilde = new Admin('Math', 123456, 'Nord');
            $florian = new Abonne('Flo', 'flotri', 'Est');
            
            $pierre->plusUn()->plusUn()->plusUn()->moinsUn();
        ?>
        <p>Un paragraphe</p>
    </body>
</html>

Exemple de chainage de méthodes en PHP objet

Ensuite, on utilise l’opérateur objet pour exécuter toutes les méthodes à la suite, d’un seul coup. C’est précisément ce qu’on appelle le chainage de méthodes.

Notez bien l’instruction return $this à la fin du code de chacune de nos deux méthodes. Cette instruction est ici obligatoire. En effet, comme je l’ai précisé plus haut, vous devez impérativement retourner l’objet en soi pour pouvoir utiliser le chainage de méthodes. Si vous omettez le return $this vous allez avoir une erreur.

La grande limitation des méthodes chainées est donc qu’on doit retourner l’objet afin que la méthode suivante s’exécute. On ne peut donc pas utiliser nos méthodes pour retourner une quelconque autre valeur puisqu’on ne peut retourner qu’une chose en PHP.

Laisser un commentaire