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 相关文章推荐
PHP5.2下chunk_split()函数整数溢出漏洞 分析
Jun 06 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
Oct 25 PHP
PHP动态创建Web站点的方法
Aug 14 PHP
关于php正则匹配汉字的方法介绍
Apr 25 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
10款PHP开源商城系统汇总介绍
Jul 23 PHP
PHP如何使用Memcached
Apr 05 PHP
微信支付PHP SDK ―― 公众号支付代码详解
Sep 13 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
php魔术方法功能与用法实例分析
Oct 19 PHP
/etc/php-fpm.d/www.conf 配置注意事项
Feb 04 PHP
PHP获取访问设备信息的方法示例
Feb 20 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
劣质的PHP代码简化
2010/02/08 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
PHP实现显示照片exif信息的方法
2014/07/11 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
实例分析PHP中PHPMailer发邮件
2017/12/13 PHP
JavaScript中双向数据绑定详解
2017/05/03 Javascript
jQuery层级选择器_动力节点节点Java学院整理
2017/07/04 jQuery
Vue的百度地图插件尝试使用
2017/09/06 Javascript
js判断节假日实例代码
2017/12/27 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
基于vue2.0实现仿百度前端分页效果附实现代码
2018/10/30 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
swiper4实现移动端导航切换
2020/10/16 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
微信小程序开发数据缓存基础知识辨析及运用实例详解
2020/11/06 Javascript
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
Python实现短网址ShortUrl的Hash运算实例讲解
2015/08/10 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
Python爬虫使用代理IP的实现
2019/10/27 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
python unichr函数知识点总结
2020/12/16 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
如何用canvas实现在线签名的示例代码
2018/07/10 HTML / CSS
大学生毕业鉴定
2014/01/31 职场文书
公司联欢晚会主持词
2014/03/22 职场文书
交通事故调解协议书
2014/04/16 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
义卖募捐活动总结
2015/05/09 职场文书
新课程改革心得体会
2016/01/22 职场文书
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android
Python开发五子棋小游戏
2022/05/02 Python
使用CSS实现黑白格背景效果
2022/06/01 HTML / CSS