PHP的伪重载

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

转自: http://www.cnitblog.com/neatstudio/archive/2006/07/21/13949.html
posted @ 2011-02-21 11:57  简单--生活  阅读(291)  评论(0编辑  收藏  举报
简单--生活(CSDN)