Heim > Artikel > Backend-Entwicklung > Einführung in die Implementierung von Überladung in PHP
Dieser Artikel stellt hauptsächlich die gängigen Überladungsmethoden in PHP vor. Er analysiert vier gängige Implementierungstechniken der Überladung in PHP und vergleicht sie mit Java in Form von Beispielen.
Dieser Artikel erklärt die Beispiele gängiger Methoden zur Implementierung von Überladung in PHP. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
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 vorhanden ist, aber unterschiedliche Parameterlisten (einschließlich der Anzahl der Parameter und Parametertypen)
Nach dieser Definition ist PHP nicht überladen, da PHP dies tut nicht zulassen, dass derselbe Funktionsname existiert.
Aber es nicht zu haben bedeutet nicht, dass es nicht erreicht werden kann.
PHP verfügt über vier Mechanismen zum Implementieren von Überladung: (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 in der PHP-Sprache implementiert ist:
<?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); } }
Verwenden Sie die optionale PHP-Parameterfunktion zur Implementierung:
<?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 PHP ist schwach Typsprachen sind einfacher zu implementieren
3. Variable Parameter
verwenden hauptsächlich die folgenden zwei Funktionen:
func_num_args()
Rückgabe die Anzahl der Parameter der Funktion func_get_args()
Gibt ein Array zurück, das die Funktionsparameterliste enthält
Spezifische Implementierungsmethode:
<?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. Verwenden Sie die magische Methode __call()
public mixed __call ( string $name , array $arguments )
Wenn Sie eine unzugängliche Methode in einem Objekt aufrufen, __call()
Wird aufgerufen automatisch
$nameDer Parameter ist der Name der aufzurufenden Methode$argumentDer Parameter ist das Parameterarray der aufgerufenen Methode
Die spezifische Implementierungsmethode ähnelt dem dritten Punkt oben:
<?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"); ?>
Das obige ist der detaillierte Inhalt vonEinführung in die Implementierung von Überladung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!