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