<?php
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 ('<br>');
test(1);
echo ('<br>');
test(1, 2);
echo ('<br>');
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 ;
}
}
?>
func_get_arg,func_get_args,func_num_args实现PHP伪重载
最新推荐文章于 2023-11-27 10:56:45 发布