找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2098|回复: 0
打印 上一主题 下一主题

PHP利用func_get_args和func_num_args函数实现函数重载实例

[复制链接]

2617

主题

2617

帖子

7789

积分

论坛元老

Rank: 8Rank: 8

积分
7789
跳转到指定楼层
楼主
发表于 2018-2-14 05:53:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文实例讲述了PHP利用func_get_args和func_num_args函数实现函数重载的方法。分享给大家供大家参考。具体方法分析如下:
学习php的朋友都知道php本身是没有函数重载这一说的,更没说像java,c那样使用方法,但如果我们深入了解一下会发现可以在php中使用func_get_args()和func_num_args()函数实现函数重载,下面来举两个函数重载例子.这两个函数实现函数的重载.
1、默认参数,如果一个函数里面,这不是必须参数,而添加相应的默认值,就可以完成相应的功能,代码如下:
[U]复制代码[/U] 代码如下:function overloadFun($param1, $param2 = '1',$param3 = true)  
{  
// do something   
}
利用函数func_get_args()和call_user_func_array(),PHP代码如下:
[U]复制代码[/U] 代码如下:function rewrite() {     
$args = func_get_args();     
if(func_num_args() == 1) {     
func1($args[0]);     
} else if(func_num_args() == 2) {     
func2($args[0], $args[1]);     
}     
}     
   
function func1($arg) {     
echo $arg;     
}     
   
function func2($arg1, $arg2) {     
echo $arg1, ' ', $arg2;     
}     
   
rewrite('PHP'); //调用func1     
rewrite('PHP','China'); //调用func2
2、使用默认值,从而根据输入,得到自己想要的结果,代码如下:
[U]复制代码[/U] 代码如下:function test($name="小李",$age="23"){   
echo $name."  ".$age;   
}   
test();   
echo "
";   
test("a");   
echo "
";   
test("a","b");
3、利用__call($name, $arg) 函数进行处理,代码如下:
[U]复制代码[/U] 代码如下verloadFun0();break;  
    case 1: $this->overloadFun1($args[0]); break;  
    case 2: $this->overloadFun2($args[0], $args[1]); break;  
    default: //do something  
      break;  
   }  
  }  
}  
     
function overloadFun0()  
{  
  echo 0;  
}
function overloadFun1($var1)  
{  
  echo $var1;  
}
function overloadFun2($var1,$var2)  
{  
   
  echo $var1+$var2;  
   }  
}   
$test=new OverLoad();  
$test->overloadFun()."
".   
$test->overloadFun(1)."
".   
$test->overloadFun(1,2)."
";  
?>
有了这样的方法之后我们就可以利用它们来实现简单函数重载了,但有一点要注明的是php 作为一种弱类型语言,本身不能像强类型如java,c++那样,直接的实现重载,至少现在不可以以后版本会不会有我们不知道.
希望本文所述对大家的PHP程序设计有所帮助。
            
            
您可能感兴趣的文章:
  • php面向对象的方法重载两种版本比较
  • php面向对象全攻略 (八)重载新的方法
  • PHP和JAVA中的重载(overload)和覆盖(override) 介绍
  • php中拷贝构造函数、赋值运算符重载
  • PHP小技巧之函数重载
  • PHP使用方法重载实现动态创建属性的get和set方法
  • php继承中方法重载(覆盖)的应用场合
  • php函数重载的替代方法--伪重载详解
  • PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
  • PHP中子类重载父类的方法【parent::方法名】
  • PHP面相对象中的重载与重写
  • PHP实现重载的常用方法实例详解
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端