Maison  >  Article  >  développement back-end  >  Introduction à la façon d'implémenter la surcharge en php

Introduction à la façon d'implémenter la surcharge en php

黄舟
黄舟original
2017-10-19 09:16:401660parcourir

Cet article présente principalement les méthodes courantes de surcharge en PHP. Il analyse quatre techniques courantes d'implémentation de surcharge en PHP en les comparant avec Java sous forme d'exemples. Les amis dans le besoin peuvent se référer à

Cet article. explique les exemples Méthodes courantes pour implémenter la surcharge en PHP. Partagez-le avec tout le monde pour référence, les détails sont les suivants :

php est un langage faiblement typé et n'a pas de surcharge comme un langage fortement typé comme JAVA.

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 le fait ne permet pas 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 implémenter la surcharge : (par rapport à Java ci-dessous)

1 Type faible, pas besoin de définir des types de variables <.>

Donnez d'abord 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);
  }
}
Utilisez la fonctionnalité de paramètre facultatif de php pour implémenter :


<?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 php est faible Type de langages ​​sont plus simples à mettre en œuvre

3. Les paramètres variables

utilisent principalement les deux fonctions suivantes :

Retour le nombre de paramètres de la fonction func_num_args()
Renvoie un tableau contenant la liste des paramètres de la fonction func_get_args()

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(&#39;var1&#39;,&#39;var2&#39;);
$obj->method(&#39;var1&#39;,&#39;var2&#39;,&#39;var3&#39;);
//看起来似乎通过一个接口调用
//但其实内部已经调用了各自定义的方法
?>

4. Utilisez la méthode magique __call()

public mixed __call ( string $name , array $arguments )

Lors de l'appel d'une méthode inaccessible dans un objet,

sera appelé automatiquement __call()

$nameLe paramètre est le nom de la méthode à appeler$argumentLe paramètre est le tableau de paramètres de la méthode appelée

La méthode de mise en œuvre spécifique Semblable au troisième point ci-dessus :


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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn