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 相关文章推荐
PHP CURL模拟GET及POST函数代码
Apr 25 PHP
字母顺序颠倒而单词顺序不变的php代码
Aug 08 PHP
PHP独立Session数据库存储操作类分享
Jun 11 PHP
初识php MVC
Sep 10 PHP
ThinkPHP提交表单时默认自动转义的解决方法
Nov 25 PHP
CodeIgniter配置之autoload.php自动加载用法分析
Jan 20 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
Mar 08 PHP
CI映射(加载)数据到view层的方法
Mar 28 PHP
laravel学习笔记之模型事件的几种用法示例
Aug 15 PHP
PHP获取星期几的常用方法小结
Dec 18 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
Oct 21 PHP
PHP使用QR Code生成二维码实例
Jul 07 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
mysql 字段类型说明
2007/04/27 PHP
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
php在线解压ZIP文件的方法
2014/12/30 PHP
JavaScript面象对象设计
2008/04/28 Javascript
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
angular中使用路由和$location切换视图
2015/01/23 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
基于jquery实现左右按钮点击的图片切换效果
2021/01/27 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
2016/05/12 Javascript
WEB前端实现裁剪上传图片功能
2016/10/17 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
JavaScript 判断对象中是否有某属性的常用方法
2018/06/14 Javascript
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
Python的time模块中的常用方法整理
2015/06/18 Python
python实现识别手写数字 python图像识别算法
2020/03/23 Python
Python OS模块实例详解
2019/04/15 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
澳大利亚排名第一的儿童在线玩具商店:Toy Galaxy
2018/10/06 全球购物
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
室内设计实习自我鉴定
2013/09/25 职场文书
工作表现评语
2014/01/19 职场文书
学校社会实践活动总结
2014/07/03 职场文书
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
孔庙导游词
2015/02/04 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
创业计划书之花店
2019/09/20 职场文书