Maison >développement back-end >tutoriel php >Analyse et exemples de surcharge de fonctions PHP
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 :
Méthode alternative de surcharge de fonction php_Tutoriel 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!