php函数重载的替代方法--伪重载详解
函数重载的替代方法-伪重载,下面看一个具体的实例代码。
<?php
//函数重载的替代方法-伪重载
//
//确实,在PHP中没有函数重载这个概念,让很多时候我们无法进行一些处理,甚至有时候不得不在函数后面定义好N个参数
//在看到了func_get_arg,func_get_args,func_num_args,这三个函数的时候,你们是不是想起了什么?
functiontestOne($a){
echo('一个参数就这样');
}
functiontestTwo($a,$b){
echo('两个参数的就这样');
}
functiontestThree($a,$b,$c){
echo('黑黑,这是三个参数的');
}
functiontest(){
$argNum=func_num_args();
//这一段其实可以用$_arg=func_get_args()来获得所有的参数,只是要用数组而已,不方便我下面的表达,呵呵
for($i=0;$i<$argNum;$i++){
$_arg_{$i}=func_get_arg($i);
}
switch($argNum){
case1:
testOne($_arg_1);
break;
case2:
testTwo($_arg_1,$_arg_2);
break;
case3:
testThree($_arg_1,$_arg_2,$_arg_3);
break;
default:
echo('这是没有参数的情况');
break;
}
}
test();
echo('');
test(1);
echo('');
test(1,2);
echo('');
test(1,2,3);
//这些只是在函数中的运用,其实最主要的还是在类中的运用
//如果这些用到类里面我就不需要担心构造函数是否有几个参数了,不是吗?
classtest{
var$a=0;
var$b=0;
functiontest(){
$argNum=func_num_args();
$_arg=func_get_args();
switch($argNum){
case1:
$this->test1($_arg[0]);
break;
case2:
$this->test2($_arg[0],$_arg[1]);
break;
default:
$this->a=0;
$this->b=1;
break;
}
}
functiontest1($a){
$this->a=$a;
}
functiontest2($a,$b){
$this->a=$a;
$this->b=$b;
}
}
?>
以上所述就是本文的全部内容了,希望大家能够喜欢。