函数重载的替代方法-伪重载,下面看一个具体的实例代码。
?
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
$_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 ;
}
}
?>
以上所述就是本文的全部内容了,希望大家能够喜欢。
http://www.bkjia.com/phpjc/996752.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/996752.htmltecharticlephp函数重载的替代方法 对于弱类型语言来说,php函数重载,并不像一般的oop那样。而弱类型本来就不区分,所以无法通过这些来实现。但是...