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!