Maison  >  Article  >  développement back-end  >  Analyse et exemples de surcharge de fonctions PHP

Analyse et exemples de surcharge de fonctions PHP

墨辰丷
墨辰丷original
2018-05-16 13:40:181503parcourir

Cet article présente principalement l'analyse de la surcharge des fonctions PHP et des exemples. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Pour les langages faiblement typés, la surcharge de fonctions PHP n'est pas comme la POO générale.

Parce que la surcharge de fonctions 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 pseudo-surcharge simple 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   
}

2. Utilisez les fonctions func_get_args() et call_user_func_array() Pour une aide détaillée, reportez-vous 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  
}

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  
}

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, tels que le jugement des types 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.

Recommandations associées :

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

Méthode alternative de surcharge de fonction php_Tutoriel PHP

Méthode alternative de surcharge de fonction php-pseudo-rechargement Chargement explication détaillée, surcharge du tutoriel explication détaillée_PHP

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