func_get_arg,func_get_args,func_num_args实现PHP伪重载
来源:互联网 发布:苹果装机必备软件 编辑:程序博客网 时间:2024/06/05 10:26
天在看书的时候,发现书上有这么一条:函数重载的替代方法——伪重载
确实,在PHP中没有函数重载这个概念,让很多时候我们无法进行一些处理,甚至有时候不得不在函数后面定义好N个参数在看到了func_get_arg,func_get_args,func_num_args,这三个函数的时候,你们是不是想起了什么?
So,let's try it...
01
<?php
02
function
testOne(
$a
) {
03
echo
(
'一个参数就这样 '
);
04
}
05
06
function
testTwo(
$a
,
$b
) {
07
echo
(
'两个参数的就这样 '
);
08
}
09
10
function
testThree(
$a
,
$b
,
$c
) {
11
echo
(
'呵呵,这是三个参数的 '
);
12
}
13
14
function
test() {
15
$argNum
= func_num_args();
16
17
// 这一段其实可以用 $_arg = func_get_args() 来获得所有的参数,只是要用数组而已,不方便我下面的表达,呵呵
18
for
(
$i
= 0;
$i
<
$argNum
;
$i
++) {
19
$_arg_
{
$i
} = func_get_arg(
$i
);
20
}
21
22
switch
(
$argNum
) {
23
case
1 :
24
testOne(
$_arg_1
);
25
break
;
26
case
2 :
27
testTwo(
$_arg_1
,
$_arg_2
);
28
break
;
29
case
3 :
30
testThree(
$_arg_1
,
$_arg_2
,
$_arg_3
);
31
break
;
32
default
:
33
echo
(
' 这是没有参数的情况 '
);
34
break
;
35
}
36
}
37
38
/**
39
* 例子的实现
40
*/
41
test();
42
echo
(
'<br>'
);
43
test(1);
44
echo
(
'<br>'
);
45
test(1, 2);
46
echo
(
'<br>'
);
47
test(1, 2, 3);
48
49
// 这些只是在函数中的运用,其实最主要的还是在类中的运用
50
// 如果这些用到类里面我就不需要担心构造函数是否有几个参数了,不是吗?
51
// 类里面的运用只举一个简单的例子
52
53
class
test
54
{
55
var
$a
= 0;
56
var
$b
= 0;
57
58
function
test() {
59
$argNum
= func_num_args();
60
$_arg
= func_get_args();
61
switch
(
$argNum
) {
62
case
1 :
63
$this
->test1(
$_arg
[0]);
64
break
;
65
case
2 :
66
$this
->test2(
$_arg
[0],
$_arg
[1]);
67
break
;
68
default
:
69
$this
->a = 0;
70
$this
->b = 1;
71
break
;
72
}
73
}
74
75
function
test1(
$a
) {
76
$this
->a =
$a
;
77
}
78
79
function
test2(
$a
,
$b
) {
80
$this
->a =
$a
;
81
$this
->b =
$b
;
82
}
83
}
84
?>
0 0
- func_get_arg,func_get_args,func_num_args实现PHP伪重载
- func_get_arg,func_get_args,func_num_args实现PHP伪重载
- php中的func_num_args、func_get_arg与func_get_args函数
- php 函数:func_get_args()、func_get_arg()与func_num_args()
- php中func_num_args(),func_get_arg(),func_get_args()的区别
- PHP中func_get_args(),func_get_arg(),func_num_args()的区别
- php函数之func_get_args()、func_get_arg()与func_num_args()
- php中的func_num_args、func_get_arg与func_get_args函数
- php中的func_num_args、func_get_arg与func_get_args函数
- func_num_args func_get_arg func_get_args
- func_get_args()、func_get_arg()与func_num_args()
- 关于PHP中func_get_args()、func_get_arg()、func_num_args()的使用(PHP函数重载)
- php 函数func_get_args()、func_get_arg()与func_num_args()之间的比较
- func_get_arg(), func_get_args() 和 func_num_args() 函数
- func_get_args() func_get_arg(offset) func_num_args(); 函数使用
- func_get_arg(),func_get_args()和func_num_args()的用法
- php中几个操作函数参数的函数func_num_args() func_get_args() func_get_arg($i)php
- PHP func_num_args与func_get_args
- vector用法
- OCP 1Z0 051 65
- C/C++为什么总喜欢用u16 u8 这样的声明类型啊
- mysql笔记4
- UITableView reloadData的正确方法
- func_get_arg,func_get_args,func_num_args实现PHP伪重载
- 朴素贝叶斯分类器
- 金矿模型之DP学习
- UITextField监控输入文字变化方法
- 如何处理好职场中的人际交往
- ATS源码多线程框架启动分析笔记
- RequestContextListener与ContextLoaderListener的区别
- 主流行式数据库评测:DB2 9.7企业版
- Guarded Suspention 要等到我准备好