Comment implémenter la surcharge en PHP : 1. Type faible, pas besoin de définir des types de variables ; 2. Paramètres facultatifs, permettant aux variables de définir des valeurs par défaut ; 4. Utilisez la méthode magique [__call ; () 】.
Comment PHP implémente la surcharge :
PHP est un langage faiblement typé et n'est pas aussi fort que les langages de type JAVA Il y a aussi une surcharge.
La surcharge signifie généralement avoir le même nom de fonction ou le même nom de méthode, mais des listes de paramètres différentes (y compris le nombre de paramètres et les types de paramètres)
D'après cette définition, PHP n'est pas surchargé car PHP ne le fait pas permettre au même nom de fonction d'exister.
Mais ne pas l’avoir ne veut pas dire que cela ne peut pas être réalisé.
PHP dispose de quatre mécanismes pour réaliser la surcharge : (par rapport à Java ci-dessous)
1 Type faible, pas besoin de définir des types de variables
Allons-y. prenons un exemple de surcharge JAVA :
class demo { public static void main (String[] args) { sum(1,1);//2 sum(1,1.5);//2.5 sum(1.5,1.5);//3.0 } public static void sum(int var1,int var2){ System.out.println(var1+var2); } public static void sum(int var1,double var2){ System.out.println(var1+var2); } public static void sum(double var1,double var2){ System.out.println(var1+var2); } }
Si le code ci-dessus est implémenté en langage PHP :
<?php function sum($var1,$var2){ echo $var1+$var2; } sum(1,1);//2 sum(1,1.5);//2.5 sum(1.5,1.5);//3 ?>
2 Paramètres facultatifs, permettant aux variables de définir des valeurs par défaut .
Exemple de surcharge JAVA :
class demo { public static void main (String[] args) { sum(1,2);//3 sum(1,2,3);//6 } public static void sum(int var1,int var2){ System.out.println(var1+var2); } public static void sum(int var1,int var2,int var3){ System.out.println(var1+var2+var3); } }
Implémenté à l'aide de la fonctionnalité de paramètre facultatif de PHP :
<?php function sum($var1,$var2,$var3=NULL){//$var3设置默认值 echo $var1+$var2+$var3; } sum(1,2);//2 sum(1,2,3);//2.5 ?>
Vous pouvez voir la même fonction, mais elle est plus simple à implémenter dans un langage faiblement typé un langage comme PHP
3. Paramètres variables
utilise principalement les deux fonctions suivantes :
func_num_args()
Renvoyer les paramètres de la fonction Numéro
func_get_args()
Renvoie un tableau contenant la liste des paramètres de la fonction
Méthode d'implémentation spécifique :
<?php class demo{ public function method(){ $numargs = func_num_args();//获得参数数量 $args = func_get_args();//获得参数数组 switch ($numargs) {//通过变量个数来确定调用哪个方法 case 2: $this->method2($args[0],$args[1]); break; case 3: $this->method3($args[0],$args[1],$args[2]); break; } } private function method2($var1,$var2){ #code... } private function method3($var1,$var2,$var3){ #code... } } //调用 $obj = new demo(); $obj->method('var1','var2'); $obj->method('var1','var2','var3'); //看起来似乎通过一个接口调用 //但其实内部已经调用了各自定义的方法 ?>
4. Utiliser la méthode magique __call()
public mixed __call ( string $name , array $arguments )
Lors de l'appel d'une méthode inaccessible dans un objet, __call()
sera automatiquement appelé
Le paramètre $name est le nom de la méthode à appeler. Le paramètre $argument est le tableau de paramètres de la méthode appelée
La méthode d'implémentation spécifique est similaire au troisième point ci-dessus :
<?php class demo{ public function __call($name,$arguments){ if($name == "method"){ switch (count($arguments)) {//获得参数数组个数 case 2: $this->method2($args[0],$args[1]); break; case 3: $this->method3($args[0],$args[1],$args[2]); break; } } } private function method2($var1,$var2){ #code... } private function method3($var1,$var2,$var3){ #code... } } //调用 $obj = new demo(); $obj->method("var1","var2"); $obj->method("var1","var2","var3"); ?>
Recommandations d'apprentissage gratuites associées :programmation php(vidéo)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!