Freunde, die PHP studieren, wissen alle, dass PHP selbst keine Funktionsüberladung aufweist, geschweige denn, wie man es wie Java und C verwendet. Wenn wir jedoch genauer hinschauen, werden wir feststellen, dass wir func_get_args() und func_num_args verwenden können PHP. Hier sind zwei Beispiele für Funktionsüberladung.
1. und das Hinzufügen entsprechender Standardwerte kann die entsprechenden Funktionen vervollständigen:
Der Code lautet wie folgt:
function overloadFun($param1, $param2 = '1',$param3 = true) { // do something }
Verwenden Sie die Funktionen func_get_args() und func_num_args(), Der PHP-Code lautet wie folgt:
Der Code lautet wie folgt:
function rewrite() { $args = func_get_args(); if(func_num_args() == 1) { func1($args[0]); } else if(func_num_args() == 2) { func2($args[0], $args[1]); } } function func1($arg) { echo $arg; } function func2($arg1, $arg2) { echo $arg1, ' ', $arg2; } rewrite('PHP'); //调用func1 rewrite('PHP','China'); //调用func2
2. Verwenden Sie den Standardwert, um die gewünschten Ergebnisse zu erhalten Basierend auf der Eingabe. Der Code lautet wie folgt:
Der Code lautet wie folgt:
function test($name="小李",$age="23"){ echo $name." ".$age; } test(); echo "<br/>"; test("a"); echo "<br/>"; test("a","b");
3. Verwenden Sie die Funktion __call($name, $arg). , der Code lautet wie folgt:
Der Code lautet wie folgt:
<?php class OverLoad{ function __call($name, $args) { if($name=='overloadFun') { switch(count($args)) { case 0: $this->overloadFun0();break; case 1: $this->overloadFun1($args[0]); break; case 2: $this->overloadFun2($args[0], $args[1]); break; default: //do something break; } } } function overloadFun0() { echo 0; } function overloadFun1($var1) { echo $var1; } function overloadFun2($var1,$var2) { echo $var1+$var2; } } $test=new OverLoad(); $test->overloadFun()."<br />". $test->overloadFun(1)."<br />". $test->overloadFun(1,2)."<br />"; ?>
Mit solchen Methoden können wir sie verwenden, um eine einfache Funktionsüberladung zu implementieren, aber eines ist zu beachten ist, dass PHP als schwach typisierte Sprache nicht so stark typisiert werden kann wie Java und C++, Überladung kann direkt implementiert werden, zumindest nicht jetzt. Wir wissen nicht, ob es in zukünftigen Versionen verfügbar sein wird
Das obige ist der detaillierte Inhalt vonPHP verwendet die Funktionen func_get_args und func_num_args, um die Methode zur Funktionsüberladung zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!