首页 > 开发 > 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. 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. switch ( $argNum ) { 
  22. case 1 : 
  23. testOne( $_arg_1 ); 
  24. break ; 
  25. case 2 : 
  26. testTwo( $_arg_1$_arg_2 ); 
  27. break ; 
  28. case 3 : 
  29. testThree( $_arg_1$_arg_2$_arg_3 ); 
  30. break ; 
  31. default : 
  32. echo ( ' 这是没有参数的情况 ' ); 
  33. break ; 
  34. test(); 
  35. echo ( ' ' ); 
  36. test( 1 ); 
  37. echo ( ' ' ); 
  38. test( 1 , 2 ); 
  39. echo ( ' ' ); 
  40. test( 1 , 2 , 3 ); 
  41.  
  42. // 这些只是在函数中的运用,其实最主要的还是在类中的运用 
  43. //如果这些用到类里面我就不需要担心构造函数是否有几个参数了,不是吗? 
  44.  
  45. class test { 
  46. var $a = 0 ; 
  47. var $b = 0 ; 
  48.  
  49. function test () { 
  50. $argNum = func_num_args (); 
  51. $_arg = func_get_args (); 
  52. switch ($argNum ) { 
  53. case 1 : 
  54. $this -> test1( $_arg [ 0 ] ); 
  55. break ; 
  56. case 2 : 
  57. $this -> test2( $_arg [ 0 ] , $_arg [ 1 ]); 
  58. break ; 
  59. default : 
  60. $this -> a = 0 ; 
  61. $this -> b = 1 ; 
  62. break ; 
  63.  
  64. function test1 ($a) { 
  65. $this -> a = $a ; 
  66.  
  67. function test2 ($a$b) { 
  68. $this -> a = $a ; 
  69. $this -> b = $b ; 
  70. ?> 

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

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