PHP的伪重载

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

转自: http://www.cnitblog.com/neatstudio/archive/2006/07/21/13949.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值