Heim  >  Artikel  >  Backend-Entwicklung  >  PHP verwendet die Funktionen func_get_args und func_num_args, um die Methode zur Funktionsüberladung zu implementieren

PHP verwendet die Funktionen func_get_args und func_num_args, um die Methode zur Funktionsüberladung zu implementieren

巴扎黑
巴扎黑Original
2017-05-23 16:10:581131Durchsuche

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==&#39;overloadFun&#39;)  
  {  
   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!

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