首页 > 开发 > PHP > 正文

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

2024-05-04 23:34:54
字体:大 中 小
来源:转载
供稿:网友

对于弱类型语言来说,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.  
  11. function testTwo ( $a , $b ){ 
  12. echo (' 两个参数的就这样 '); 
  13. } 
  14.  
  15. function testThree ($a, $b, $c ) { 
  16. echo (' 黑黑,这是三个参数的 '); 
  17. } 
  18.  
  19. function test () { 
  20. $argNum = func_num_args (); 
  21. // 这一段其实可以用 $_arg = func_get_args() 来获得所有的参数,只是要用数组而已,不方便我下面的表达,呵呵 
  22. for ( $i = 0 ; $i < $argNum ; $i ++ ) { 
  23. $_arg_ { $i } = func_get_arg ( $i ); 
  24. } 
  25. switch ( $argNum ) { 
  26. case 1 : 
  27. testOne( $_arg_1 ); 
  28. break ; 
  29. case 2 : 
  30. testTwo( $_arg_1, $_arg_2 ); 
  31. break ; 
  32. case 3 : 
  33. testThree( $_arg_1, $_arg_2, $_arg_3 ); 
  34. break ; 
  35. default : 
  36. echo ( ' 这是没有参数的情况 ' ); 
  37. break ; 
  38. } 
  39. } 
  40. test(); 
  41. echo ( ' ' ); 
  42. test( 1 ); 
  43. echo ( ' ' ); 
  44. test( 1 , 2 ); 
  45. echo ( ' ' ); 
  46. test( 1 , 2 , 3 ); 
  47.  
  48. // 这些只是在函数中的运用,其实最主要的还是在类中的运用 
  49. //如果这些用到类里面我就不需要担心构造函数是否有几个参数了,不是吗? 
  50.  
  51. class test { 
  52. var $a = 0 ; 
  53. var $b = 0 ; 
  54.  
  55. function test () { 
  56. $argNum = func_num_args (); 
  57. $_arg = func_get_args (); 
  58. switch ($argNum ) { 
  59. case 1 : 
  60. $this -> test1( $_arg [ 0 ] ); 
  61. break ; 
  62. case 2 : 
  63. $this -> test2( $_arg [ 0 ] , $_arg [ 1 ]); 
  64. break ; 
  65. default : 
  66. $this -> a = 0 ; 
  67. $this -> b = 1 ; 
  68. break ; 
  69. } 
  70. } 
  71.  
  72. function test1 ($a) { 
  73. $this -> a = $a ; 
  74. } 
  75.  
  76. function test2 ($a, $b) { 
  77. $this -> a = $a ; 
  78. $this -> b = $b ; 
  79. } 
  80. } 
  81. ?> 

以上所述就是本文的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表