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


Posted in PHP onNovember 12, 2014

本文实例讲述了PHP利用func_get_args和func_num_args函数实现函数重载的方法。分享给大家供大家参考。具体方法分析如下:

学习php的朋友都知道php本身是没有函数重载这一说的,更没说像java,c那样使用方法,但如果我们深入了解一下会发现可以在php中使用func_get_args()和func_num_args()函数实现函数重载,下面来举两个函数重载例子.这两个函数实现函数的重载.

1、默认参数,如果一个函数里面,这不是必须参数,而添加相应的默认值,就可以完成相应的功能,代码如下:

function overloadFun($param1, $param2 = '1',$param3 = true)  

{  

 // do something   

}

利用函数func_get_args()和call_user_func_array(),PHP代码如下:
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、使用默认值,从而根据输入,得到自己想要的结果,代码如下:
function test($name="小李",$age="23"){    

echo $name."  ".$age;    

}    

test();    

echo "<br/>";    

test("a");    

echo "<br/>";    

test("a","b");

3、利用__call($name, $arg) 函数进行处理,代码如下:
<?php  

class OverLoad{  

function __call($name, $args)  

{  

  if($name=='overloadFun')  

  {  

   switch(count($args))  

   {  

    case 0: $this->overloadFun0();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()."<br />".   

$test->overloadFun(1)."<br />".   

$test->overloadFun(1,2)."<br />";  

?>

有了这样的方法之后我们就可以利用它们来实现简单函数重载了,但有一点要注明的是php 作为一种弱类型语言,本身不能像强类型如java,c++那样,直接的实现重载,至少现在不可以以后版本会不会有我们不知道.

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
一个简单的自动发送邮件系统(二)
Oct 09 PHP
php PDO中文乱码解决办法
Jul 20 PHP
php顺序查找和二分查找示例
Mar 27 PHP
php输出xml必须header的解决方法
Oct 17 PHP
PHP邮件群发机实现代码
Feb 16 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
Oct 17 PHP
Laravel中任务调度console使用方法小结
May 07 PHP
利用Laravel事件系统如何实现登录日志的记录详解
May 20 PHP
PHP实现将标点符号正则替换为空格的方法
Aug 09 PHP
PHP快速排序算法实现的原理及代码详解
Apr 03 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
Apr 10 PHP
PHP中国际化的字符串排序和比较对象详解
Aug 23 PHP
PHP之sprintf函数用法详解
Nov 12 #PHP
php中simplexml_load_file函数用法实例
Nov 12 #PHP
php实现的ping端口函数实例
Nov 12 #PHP
PHP实现下载断点续传的方法
Nov 12 #PHP
php格式化日期实例分析
Nov 12 #PHP
PHP中的Streams详细介绍
Nov 12 #PHP
PHP产生不重复随机数的5个方法总结
Nov 12 #PHP
You might like
hessian 在PHP中的使用介绍
2010/12/13 PHP
PHP扩展Swoole实现实时异步任务队列示例
2019/04/13 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
js验证是否为数字的总结
2013/04/14 Javascript
如何编写高质量JS代码
2014/12/28 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
JS异步文件分片断点上传的实现思路
2016/12/25 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
详细AngularJs4的图片剪裁组件的实例
2017/07/12 Javascript
详谈for循环里面的break和continue语句
2017/07/20 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
聊聊Vue 中 title 的动态修改问题
2019/06/11 Javascript
vue实现简单瀑布流布局
2020/05/28 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
vue 中使用print.js导出pdf操作
2020/11/13 Javascript
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
Python3之读取连接过的网络并定位的方法
2018/04/22 Python
Python实现全排列的打印
2018/08/18 Python
详解通过API管理或定制开发ECS实例
2018/09/30 Python
详解Python odoo中嵌入html简单的分页功能
2019/05/29 Python
python解释器pycharm安装及环境变量配置教程图文详解
2020/02/26 Python
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
秋季运动会加油稿200字
2014/01/11 职场文书
八年级物理教学反思
2014/01/19 职场文书
2015年学校总务处工作总结
2015/05/19 职场文书
2016年教师寒假学习心得体会
2015/10/09 职场文书
解决vue-router的beforeRouteUpdate不能触发
2022/04/14 Vue.js