欢迎光临
我们一直在努力

php函数重载的替代方法--伪重载详解

对于弱类型语言来说,PHP函数重载,并不像一般的OOP那样。而弱类型本来就不区分,所以无法通过这些来实现,但是,可以通过下面的方法来实现简单的

  1. <? php 
  2. //函数重载的替代方法-伪重载 
  3. // 
  4. //确实,在PHP中没有函数重载这个概念,让很多时候我们无法进行一些处理,甚至有时候不得不在函数后面定义好N个参数 
  5. //在看到了func_get_arg,func_get_args,func_num_args,这三个函数的时候,你们是不是想起了什么? 
  6.  
  7. function testOne ( $a ) { 
  8.  echo (' 一个参数就这样 '); 
  9.  
  10. function testTwo ( $a ,  $b ){ 
  11.  echo (' 两个参数的就这样 '); 
  12.  
  13. function testThree ($a,  $b,  $c ) { 
  14.  echo (' 黑黑,这是三个参数的 '); 
  15.  
  16. function test () { 
  17.  $argNum  =  func_num_args (); 
  18.   // 这一段其实可以用 $_arg = func_get_args() 来获得所有的参数,只是要用数组而已,不方便我下面的表达,呵呵 
  19.  for ( $i  =  0 ; $i  <  $argNum ; $i ++ ) { 
  20.   $_arg_ { $i } =  func_get_arg ( $i ); 
  21.  } 
  22.  switch ( $argNum ) { 
  23.   case  1 : 
  24.    testOne( $_arg_1 ); 
  25.    break ; 
  26.   case  2 : 
  27.    testTwo( $_arg_1,  $_arg_2 ); 
  28.    break ; 
  29.   case  3 : 
  30.    testThree( $_arg_1,  $_arg_2,  $_arg_3 ); 
  31.    break ; 
  32.   default : 
  33.    echo ( ' 这是没有参数的情况 ' ); 
  34.    break ; 
  35.  } 
  36. test(); 
  37. echo ( ' ' ); 
  38. test( 1 ); 
  39. echo ( ' ' ); 
  40. test( 1 , 2 ); 
  41. echo ( ' ' ); 
  42. test( 1 , 2 , 3 ); 
  43.  
  44. // 这些只是在函数中的运用,其实最主要的还是在类中的运用 
  45. //如果这些用到类里面我就不需要担心构造函数是否有几个参数了,不是吗? 
  46.  
  47. class test { 
  48.  var  $a  =  0 ; 
  49.  var  $b  =  0 ; 
  50.  
  51.  function test () { 
  52.   $argNum  =  func_num_args (); 
  53.   $_arg  =  func_get_args (); 
  54.   switch ($argNum ) { 
  55.    case  1 : 
  56.    $this -> test1( $_arg [ 0 ] ); 
  57.    break ; 
  58.   case  2 : 
  59.    $this -> test2( $_arg [ 0 ] ,  $_arg [ 1 ]); 
  60.    break ; 
  61.   default : 
  62.    $this -> a = 0 ; 
  63.    $this -> b = 1 ; 
  64.    break ; 
  65.   } 
  66.  } 
  67.  
  68.  function test1 ($a) { 
  69.   $this -> a =  $a ; 
  70.  } 
  71.  
  72.  function test2 ($a,  $b) { 
  73.   $this -> a =  $a ; 
  74.   $this -> b =  $b ; 
  75.  } 
  76. ?> 

伪重载吧。

函数重载的替代方法-伪重载,下面看一个具体的实例代码。

赞(0) 本模板价: 打赏
未经允许不得转载:站长分享圈 » php函数重载的替代方法--伪重载详解