Maison  >  Article  >  développement back-end  >  PHP utilise les fonctions func_get_args et func_num_args pour implémenter la méthode de surcharge de fonctions

PHP utilise les fonctions func_get_args et func_num_args pour implémenter la méthode de surcharge de fonctions

巴扎黑
巴扎黑original
2017-05-23 16:10:581131parcourir

Les amis qui étudient PHP savent tous que PHP lui-même n'a pas de surcharge de fonctions, et encore moins comment l'utiliser comme Java et C. Mais si nous y regardons de plus près, nous constaterons que nous pouvons utiliser func_get_args() et func_num_args dans PHP. La fonction () implémente la surcharge de fonctions. Voici deux exemples de surcharge de fonctions. Ces deux fonctions implémentent la surcharge de fonctions

1. et l'ajout des valeurs par défaut correspondantes peut compléter les fonctions correspondantes. Le code est le suivant :

Le code est le suivant :

function overloadFun($param1, $param2 = '1',$param3 = true)  {   // do something   }

Utilisez les fonctions func_get_args() et func_num_args(), Le code PHP est le suivant :

Le code est le suivant :

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


Utilisez la valeur par défaut pour obtenir les résultats souhaités. en fonction de l'entrée. Le code est le suivant :

Le code est le suivant :

function test($name="小李",$age="23"){    
echo $name."  ".$age;    
}    
test();    
echo "<br/>";    
test("a");    
echo "<br/>";    
test("a","b");

3. Utilisez la fonction __call($name, $arg) pour le traitement. , le code est le suivant :

Le code est le suivant :

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

Avec de telles méthodes, nous pouvons les utiliser pour implémenter une simple surcharge de fonctions, mais une chose à noter est que PHP, en tant que langage faiblement typé, ne peut pas être aussi fortement typé que Comme Java et C++, la surcharge peut être implémentée directement, du moins pas maintenant. Nous ne savons pas si elle sera disponible dans les futures versions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn