Maison  >  Article  >  développement back-end  >  Explication détaillée de l'utilisation des fonctions php func_get_args et func_num_args

Explication détaillée de l'utilisation des fonctions php func_get_args et func_num_args

伊谢尔伦
伊谢尔伦original
2017-07-08 11:16:151769parcourir

Les amis qui apprennent PHP savent tous que PHP lui-même n'a pas de fonctionssurcharge, et il ne dit pas non plus comment l'utiliser comme Java ou C, mais si nous Si vous regardez de plus près, vous constaterez que vous pouvez utiliser les fonctions func_get_args() et func_num_args() en PHP pour implémenter la surcharge de fonctions. Voici deux exemples de surcharge de fonctions.

1. Paramètres par défaut. Si dans une fonction, ce n'est pas un paramètre obligatoire, et l'ajout de la valeur par défaut correspondante peut compléter la fonction correspondante :

. Le code est le suivant :

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

En utilisant les fonctions func_get_args() et call_user_func_array(), le le code PHP est le suivant :

Le code est le suivant suit :

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. Utilisez la valeur par défaut pour pour obtenir les résultats souhaités en fonction de l'entrée :

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 cette méthode, nous pouvons Ils sont utilisés pour implémenter une simple surcharge de fonctions, mais une chose à noter est que PHP, en tant que langage faiblement typé, ne peut pas implémenter directement surcharge comme les langages fortement typés tels que Java et C++, du moins pas maintenant. Il n'y a rien que nous ne sachions pas 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