Surcharge de méthode en PHP

Subodh Poudel 30 janvier 2023
  1. Surcharge de méthode en PHP
  2. Utiliser la méthode magique __call() pour implémenter la surcharge de méthode en PHP
  3. Utiliser la méthode magique __callStatic() pour implémenter la surcharge de méthode en PHP
Surcharge de méthode en PHP

Cet article présentera le concept de surcharge de méthode en PHP avec des exemples.

Surcharge de méthode en PHP

La surcharge de méthode est un concept en POO où plusieurs méthodes du même nom existent dans une classe qui accepte un nombre différent de paramètres ou de types de données. Par exemple, une méthode add() peut être surchargée en la définissant deux fois ; le premier prend deux paramètres, tandis que le second prend trois paramètres.

Nous pouvons même surcharger la fonction en fournissant des arguments entiers dans une méthode tout en fournissant des arguments à virgule flottante dans l’autre. Ce type de surcharge est populaire dans les langages comme Java et C++.

Cependant, le concept de surcharge de méthode est assez différent en PHP. La surcharge de méthode est le processus de création dynamique d’une méthode à l’aide de méthodes magiques.

Nous pouvons créer des méthodes qui n’existent pas dans le cadre d’une classe. Cela fonctionne à la fois pour les méthodes de classe et les méthodes statiques.

Les méthodes magiques __call() et __callStatic() sont utilisées pour surcharger les méthodes dynamiques. Il ressort clairement du nom que la méthode __call() est utilisée pour les méthodes de classe, et la méthode callStatic() est utilisée pour les méthodes statiques.

La syntaxe de ces méthodes est présentée ci-dessous.

__call($name, $arguments){
//function  body
}

Ici, $name est le nom de la méthode dynamique et $arguments est un tableau contenant les arguments de la méthode dynamique. A l’intérieur de la méthode, nous pouvons accéder aux arguments en utilisant les indices du tableau $arguments.

Utiliser la méthode magique __call() pour implémenter la surcharge de méthode en PHP

On peut utiliser la méthode __call() pour créer dynamiquement une méthode en PHP. La méthode sera exécutée lorsque nous invoquerons une méthode non encore créée dans le contexte de l’objet.

Le processus est appelé surcharge de méthode en PHP.

Par exemple, créez une classe University et la méthode __call() à l’intérieur. Nommez les paramètres $name et $arguments dans cette méthode.

A l’intérieur de la méthode, imprimez la variable $name et les éléments du tableau $arguments. En dehors de la classe, créez un objet $student de la classe University.

Invoquez ensuite la méthode student_info() avec l’objet $student. Passez les arguments 001 et Biswash dans la méthode.

Exemple de code :

<?php
class University{
    public function __call($name, $arguments){
        echo "inside the method: ".$name."<br>";
        echo "id:".$arguments[0]."<br>";
        echo "name:".$arguments[1]."<br>";
        }
}

$student = new University;
$student->student_info(001,'Biswash');
?>

Comprenons le flux de l’exemple ci-dessus.

Lorsque nous invoquons la méthode student_info() avec les paramètres, le programme ne trouve pas la méthode dans la classe University. Mais, la méthode __call() existe dans la classe, donc cette fonction est exécutée.

Le paramètre $name de la méthode contient la méthode student_info() et le paramètre $arguments contient les arguments 001 et Biswash comme Array ( [0] => 1 [1] => Biswash ). Les paramètres sont imprimés à l’intérieur de la méthode __call().

Production:

inside the method: student_info
id:1
name:Biswash

De cette manière, nous pouvons utiliser la méthode magique __call() pour réaliser une surcharge de méthode dans le contexte de l’objet en PHP.

Utiliser la méthode magique __callStatic() pour implémenter la surcharge de méthode en PHP

Nous pouvons également utiliser la fonctionnalité de surcharge de méthode dans le contexte statique de PHP. Il faut utiliser la méthode magique __callStatic().

La définition de la fonction de la méthode est similaire à celle de la méthode __call. Cependant, comme nous l’utilisons dans le contexte statique, la méthode doit être statique.

Puisqu’il s’agit d’un contexte statique, nous n’avons pas besoin de créer une instance de la classe. On peut directement appeler la méthode à créer dynamiquement à l’aide de l’opérateur :: de la classe.

Par exemple, créez une méthode __callStatic() à l’intérieur de la classe University comme nous l’avons fait pour la méthode __call(). N’oubliez pas d’écrire le mot-clé static lors de la définition de la méthode.

Remplissez les paramètres et le corps de la méthode comme dans la méthode ci-dessus. En dehors de la classe, invoquez une méthode professor_info en utilisant l’opérateur :: par la classe comme University::professor_info().

Fournissez les arguments de votre choix dans la méthode.

Exemple de code :

<?php
class University{
    public static function __callStatic($name, $arguments){
        echo "inside the method: ".$name."<br>";
        echo "id:".$arguments[0]."<br>";
        echo "name:".$arguments[1]."<br>";
    }
}

University::professor_info(0010,'Professor Jack ');
?>

Production:

inside the method: professor_info
id:8
name:Professor Jack

De cette façon, nous pouvons surcharger une méthode statique en utilisant la méthode magique __callStatic() de PHP.

Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn