Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist die Methode, um Überladung in PHP zu implementieren?

Was ist die Methode, um Überladung in PHP zu implementieren?

coldplay.xixi
coldplay.xixiOriginal
2020-11-04 14:06:403687Durchsuche

So implementieren Sie die Überladung in PHP: 1. Schwacher Typ, keine Notwendigkeit, Variablentypen zu definieren; 2. Optionale Parameter, die es Variablen ermöglichen, Standardwerte festzulegen; 4. Verwenden Sie die magische Methode [__call()].

Was ist die Methode, um Überladung in PHP zu implementieren?

So implementieren Sie Überladung in PHP:

php ist eine schwach typisierte Sprache und weist keine Überladung wie eine stark typisierte Sprache wie JAVA auf.

Überladen bedeutet im Allgemeinen, dass derselbe Funktionsname oder Methodenname, aber unterschiedliche Parameterlisten (einschließlich der Anzahl der Parameter und Parametertypen) vorhanden sind.

Nach dieser Definition gibt es in PHP keine Überladung, da PHP dies nicht zulässt. Derselbe Funktionsname existiert.

Aber es nicht zu haben bedeutet nicht, dass es nicht erreicht werden kann.

php verfügt über vier Mechanismen, um eine Überladung zu erreichen: (im Vergleich zu Java unten)

1. Schwacher Typ, keine Notwendigkeit, Variablentypen zu definieren.

Geben Sie zunächst ein Beispiel für eine JAVA-Überladung:

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);
  }
}

Wenn der obige Code implementiert ist PHP-Sprache:

<?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. Optionale Parameter, die es Variablen ermöglichen, Standardwerte festzulegen

JAVA-Überladungsbeispiel:

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);
  }
}

Implementiert mit der optionalen PHP-Parameterfunktion:

<?php
function sum($var1,$var2,$var3=NULL){//$var3设置默认值
  echo $var1+$var2+$var3;
}
sum(1,2);//2
sum(1,2,3);//2.5
?>

Sie können die gleiche Funktion sehen, aber schwach typisiert Sprachen wie PHP sind einfacher zu implementieren

3. Variable Parameter

verwenden hauptsächlich die folgenden zwei Funktionen:

  • func_num_args() Gibt die Anzahl der Parameter der Funktion zurückfunc_num_args()返回函数的参数个数

  • func_get_args()返回一个包含函数参数列表的数组

具体实现方式:

<?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、使用魔术方法 __call()

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

在对象中调用一个不可访问的方法时,__call()

func_get_args()Gibt ein Array mit der Funktionsparameterliste zurück

Spezifische Implementierungsmethode:

<?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");
?>

4 Verwenden Sie die magische Methode __call()
öffentlicher gemischter __call ( string $name , array $arguments )

Beim Aufrufen einer unzugänglichen Methode in einem Objekt, __call() code> wird automatisch aufgerufen🎜🎜$Name-Parameter ist der Name der aufzurufenden Methode.$Argument-Parameter ist das Parameterarray der aufgerufenen Methode🎜🎜Die spezifische Implementierungsmethode ähnelt dem dritten Punkt oben:🎜rrreee🎜🎜Verwandtes kostenloses Lernen Empfehlungen:🎜php-Programmierung🎜(Video)🎜🎜🎜

Das obige ist der detaillierte Inhalt vonWas ist die Methode, um Überladung in PHP zu implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn