Heim >Backend-Entwicklung >PHP-Problem >Was ist die Methode, um Überladung in PHP zu implementieren?
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()].
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('var1','var2'); $obj->method('var1','var2','var3'); //看起来似乎通过一个接口调用 //但其实内部已经调用了各自定义的方法 ?>
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"); ?>
Beim Aufrufen einer unzugänglichen Methode in einem Objekt,4 Verwenden Sie die magische Methode
__call()
öffentlicher gemischter __call ( string $name , array $arguments )
__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!