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在Apache下的两种模式的安装
Sep 05 PHP
php性能优化分析工具XDebug 大型网站调试工具
May 22 PHP
PHP实现删除非站内外部链接实例代码
Jun 17 PHP
PHP异常处理浅析
May 12 PHP
PHP微信分享开发详解
Jan 14 PHP
thinkPHP5.0框架自动加载机制分析
Mar 18 PHP
利用php-cli和任务计划实现刷新token功能的方法
May 03 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
利用php操作memcache缓存的基础方法示例
Aug 02 PHP
PHP实现字符串大小写转函数的功能实例
Feb 06 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
Mar 29 PHP
PHP7 list() 函数修改
Mar 09 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实现WebService的简单示例和实现步骤
2015/03/27 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
php适配器模式简单应用示例
2019/10/23 PHP
简单实现异步编程promise模式
2015/07/31 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
JavaScript Split()方法
2015/12/18 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
2019/07/10 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
Python学习之asyncore模块用法实例教程
2014/09/29 Python
将Python中的数据存储到系统本地的简单方法
2015/04/11 Python
python实现下载整个ftp目录的方法
2017/01/17 Python
Python和C/C++交互的几种方法总结
2017/05/11 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
2017/12/12 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
python图形开发GUI库pyqt5的基本使用方法详解
2020/02/14 Python
pytorch masked_fill报错的解决
2020/02/18 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
Python pymysql模块安装并操作过程解析
2020/10/13 Python
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
追悼会上的答谢词
2014/01/10 职场文书
集体婚礼策划方案
2014/02/22 职场文书
医院保洁服务方案
2014/06/11 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
金秋助学感谢信
2015/01/21 职场文书
python3实现常见的排序算法(示例代码)
2021/07/04 Python
Oracle锁表解决方法的详细记录
2022/06/05 Oracle