PHP的伪重载
来源:互联网 发布:js slice不传参数 编辑:程序博客网 时间:2024/06/11 23:06
<?php
4//今天在看书的时候,发现书上有这么一条:函数重载的替代方法————伪重载
5//
6//确实,在PHP中没有函数重载这个概念,让很多时候我们无法进行一些处理,甚至有时候不得不在函数后面定义好N个参数
7//在看到了func_get_arg,func_get_args,func_num_args,这三个函数的时候,你们是不是想起了什么?
8//SO,let's try it..
9
10 function testOne ( $a )
11 {
12 echo( '一个参数就这样' );
13 }
14
15 function testTwo ( $a , $b)
16 {
17 echo( '两个参数的就这样' );
18 }
19
20 function testThree ( $a , $b , $c)
21 {
22 echo( '黑黑,这是三个参数的' );
23 }
24
25 function test ()
26 {
27 $argNum = func_num_args();
28 //这一段其实可以用 $_arg = func_get_args() 来获得所有的参数,只是要用数组而已,不方便我下面的表达,呵呵
29 for ( $i = 0; $i < $argNum; $i++ )
30 {
31 $_arg_{$i} = func_get_arg( $i );
32 }
33 switch ( $argNum )
34 {
35 case 1:
36 testOne( $_arg_1 );
37 break;
38 case 2:
39 testTwo( $_arg_1 , $_arg_2 );
40 break;
41 case 3:
42 testThree( $_arg_1 , $_arg_2 , $_arg_3 );
43 break;
44 default:
45 echo( '这是没有参数的情况' );
46 break;
47 }
48 }
49
50 /**
51 * 例子的实现
52 *
53 */
54 test();
55 echo( '<br>' );
56 test(1);
57 echo( '<br>' );
58 test(1,2);
59 echo( '<br>' );
60 test(1,2,3);
61
62
63
64//这些只是在函数中的运用,其实最主要的还是在类中的运用
65//如果这些用到类里面我就不需要担心构造函数是否有几个参数了,不是吗?
66//类里面的运用只举一个简单的例子
67
68 class test
69 {
70 var $a = 0;
71 var $b = 0;
72
73 function test ()
74 {
75 $argNum = func_num_args();
76 $_arg = func_get_args();
77 switch ( $argNum )
78 {
79 case 1:
80 $this->test1( $_arg[0] );
81 break;
82 case 2:
83 $this->test2( $_arg[0] , $_arg[1]);
84 break;
85 default:
86 $this->a = 0;
87 $this->b = 1;
88 break;
89 }
90 }
91
92 function test1 ( $a )
93 {
94 $this->a = $a;
95 }
96
97 function test2 ( $a , $b)
98 {
99 $this->a = $a;
100 $this->b = $b;
101 }
102 }
103
104
105?>
- PHP的伪重载
- PHP的伪重载
- PHP的伪重载
- PHP 伪重载
- func_get_arg,func_get_args,func_num_args实现PHP伪重载
- func_get_arg,func_get_args,func_num_args实现PHP伪重载
- PHP的伪静态
- PHP的“重载方法”
- php的重载
- PHP的重载
- php :可笑的重载
- PHP:函数的重载
- 【php】伪静态的概念
- php的伪静态方法
- PHP伪静态的实现
- PHP伪静态的处理
- 【PHP】php的伪静态的实现
- php 5 方法的重载
- 从Project Euler中我们学到了什么?
- delphi 中 Label 中文显示不全的问题解决办法
- Linux下编程使用的编译器选择
- 栈-顺序结构C++实现
- 8.VC(ui)-自绘对话框基类
- PHP的伪重载
- 依葫画瓢:自定义liferay的日期控件
- RCP
- 对代理模式与java动态代理类的理解(转)
- Windows Phone 7 资源汇总(超全)
- RCP
- RCP
- 安全,任重道远
- 华职-网络班