Maison > développement back-end > tutoriel php > Qu'est-ce que la surcharge de fonctions php ? Explication détaillée de l'utilisation de la surcharge de fonctions

Qu'est-ce que la surcharge de fonctions php ? Explication détaillée de l'utilisation de la surcharge de fonctions

伊谢尔伦
Libérer: 2023-03-13 07:56:02
original
1683 Les gens l'ont consulté

Pour les langages faiblement typés, les fonctions PHP surcharge ne sont pas comme la POO générale.

Parce que la surcharge de fonction doit remplir deux conditions :

1 Le nombre de paramètres de fonction est différent.

2. Les types de paramètres sont différents.

PHP ne peut pas satisfaire ces deux points. Vous pouvez ajouter plus de paramètres à la fonction, ce qui équivaut à passer une variable temporaire supplémentaire. Les types faibles ne sont pas intrinsèquement différenciés, ils ne peuvent donc pas être mis en œuvre à travers eux.

Cependant, vous pouvez réaliser une simple pseudo-surcharge grâce à la méthode suivante.

1. Paramètres par défaut

Comme vous pouvez le voir ci-dessus, si j'ajoute les valeurs par défaut correspondantes aux paramètres non requis dans une fonction, la fonction correspondante peut être complétée.

  function overloadFun($param1, $param2 = '1',$param3 = true)
  {
  // do something 
  }
Copier après la connexion

2. Utilisez les fonctions func_get_args() et call_user_func_array() Pour une aide détaillée, veuillez vous référer au Manuel PHP.

Utilisez une fonction régulière pour appeler pour faciliter une gestion unifiée.

function overloadFun()  
{  
    // overloadFun可以随便定义,但为了命名规范,建议宝贝为与此函数名一样,  
    // 后面的尾随数值为参数个数,以方便管理  
$name="overloadFun".func_num_args();   
  return call_user_func_array(array($this,$name), func_get_args());       
}  
  
function overloadFun0()  
{  
    // do something  
}  
  
function overloadFun1()  
{  
    // do something  
}  
  
function overloadFun2()  
{  
    // do something  
}
Copier après la connexion

3. Utilisez la fonction call($name, $arg) pour le traitement.

function call($name, $args)  
{  
    if($name=='overloadFun')  
    {  
        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()  
{  
    // do something  
}  
  
function overloadFun1()  
{  
    // do something  
}  
  
function overloadFun2()  
{  
    // do something  
}
Copier après la connexion

Pour résumer, ces méthodes peuvent toutes réaliser une pseudo-surcharge. Fondamentalement, les deuxième et troisième méthodes peuvent traiter et juger mutuellement le contenu.

L'article ne donne que la méthode. Il peut y avoir de nombreux détails à traiter, comme le jugement des entiers, des catégories, etc.

Cependant, selon le contenu ci-dessus, php pourrait ne jamais être vraiment surchargé, auquel cas le sens du langage lui-même sera perdu.

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