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

巴扎黑
Libérer: 2023-03-07 20:54:01
original
1209 Les gens l'ont consulté

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

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


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");
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 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!

Étiquettes associées:
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