Maison  >  Article  >  développement back-end  >  L'utilisation de la pseudo-surcharge php

L'utilisation de la pseudo-surcharge php

*文
*文original
2017-12-26 14:15:381229parcourir

Comment utiliser le pseudo-rechargement PHP ? Pour les langages faiblement typés, la surcharge de fonctions PHP n'est pas comme la POO générale. Les types faibles ne sont pas intrinsèquement différenciés, ils ne peuvent donc pas être mis en œuvre à travers eux. Cet article explique comment implémenter la pseudo-surcharge en PHP, en espérant qu'il sera utile à tout le monde.

Une alternative à la surcharge de fonctions - la pseudo-surcharge Examinons un exemple de code spécifique ci-dessous.

<? php
//函数重载的替代方法-伪重载
//
//确实,在PHP中没有函数重载这个概念,让很多时候我们无法进行一些处理,甚至有时候不得不在函数后面定义好N个参数
//在看到了func_get_arg,func_get_args,func_num_args,这三个函数的时候,你们是不是想起了什么?

function testOne ( $a ) {
 echo (&#39; 一个参数就这样 &#39;);
}

function testTwo ( $a ,  $b ){
 echo (&#39; 两个参数的就这样 &#39;);
}

function testThree ($a,  $b,  $c ) {
 echo (&#39; 黑黑,这是三个参数的 &#39;);
}

function test () {
 $argNum  =  func_num_args ();
  // 这一段其实可以用 $_arg = func_get_args() 来获得所有的参数,只是要用数组而已,不方便我下面的表达,呵呵
 for ( $i  =  0 ; $i  <  $argNum ; $i ++ ) {
  $_arg_ { $i } =  func_get_arg ( $i );
 }
 switch ( $argNum ) {
  case  1 :
   testOne( $_arg_1 );
   break ;
  case  2 :
   testTwo( $_arg_1,  $_arg_2 );
   break ;
  case  3 :
   testThree( $_arg_1,  $_arg_2,  $_arg_3 );
   break ;
  default :
   echo ( &#39; 这是没有参数的情况 &#39; );
   break ;
 }
}
test();
echo ( &#39; &#39; );
test( 1 );
echo ( &#39; &#39; );
test( 1 , 2 );
echo ( &#39; &#39; );
test( 1 , 2 , 3 );

// 这些只是在函数中的运用,其实最主要的还是在类中的运用
//如果这些用到类里面我就不需要担心构造函数是否有几个参数了,不是吗?

class test {
 var  $a  =  0 ;
 var  $b  =  0 ;

 function test () {
  $argNum  =  func_num_args ();
  $_arg  =  func_get_args ();
  switch ($argNum ) {
   case  1 :
   $this -> test1( $_arg [ 0 ] );
   break ;
  case  2 :
   $this -> test2( $_arg [ 0 ] ,  $_arg [ 1 ]);
   break ;
  default :
   $this -> a = 0 ;
   $this -> b = 1 ;
   break ;
  }
 }

 function test1 ($a) {
  $this -> a =  $a ;
 }

 function test2 ($a,  $b) {
  $this -> a =  $a ;
  $this -> b =  $b ;
 }
}
?>

Recommandations associées :

Méthode de rechargement PHP_ _call( )

Surcharge PHP

Structure de base de la fonction 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