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

伊谢尔伦
Libérer: 2023-03-13 08:40:02
original
1768 Les gens l'ont consulté

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   
}
Copier après la connexion

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
Copier après la connexion


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");
Copier après la connexion


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 />";  
?>
Copier après la connexion

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!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!