php函数重载的替代方法--伪重载详解


Posted in PHP onMay 08, 2015

函数重载的替代方法-伪重载,下面看一个具体的实例代码。

<? php
//函数重载的替代方法-伪重载
//
//确实,在PHP中没有函数重载这个概念,让很多时候我们无法进行一些处理,甚至有时候不得不在函数后面定义好N个参数
//在看到了func_get_arg,func_get_args,func_num_args,这三个函数的时候,你们是不是想起了什么?

function testOne ( $a ) {
 echo (' 一个参数就这样 ');
}

function testTwo ( $a ,  $b ){
 echo (' 两个参数的就这样 ');
}

function testThree ($a,  $b,  $c ) {
 echo (' 黑黑,这是三个参数的 ');
}

function test () {
 $argNum  =  func_num_args ();
  // 这一段其实可以用 $_arg = func_get_args() 来获得所有的参数,只是要用数组而已,不方便我下面的表达,呵呵
 for ( $i  =  0 ; $i  <  $argNum ; $i ++ ) {
  $_arg_ { $i } =  func_get_arg ( $i );
 }
 switch ( $argNum ) {
  case  1 :
   testOne( $_arg_1 );
   break ;
  case  2 :
   testTwo( $_arg_1,  $_arg_2 );
   break ;
  case  3 :
   testThree( $_arg_1,  $_arg_2,  $_arg_3 );
   break ;
  default :
   echo ( ' 这是没有参数的情况 ' );
   break ;
 }
}
test();
echo ( ' ' );
test( 1 );
echo ( ' ' );
test( 1 , 2 );
echo ( ' ' );
test( 1 , 2 , 3 );

// 这些只是在函数中的运用,其实最主要的还是在类中的运用
//如果这些用到类里面我就不需要担心构造函数是否有几个参数了,不是吗?

class test {
 var  $a  =  0 ;
 var  $b  =  0 ;

 function test () {
  $argNum  =  func_num_args ();
  $_arg  =  func_get_args ();
  switch ($argNum ) {
   case  1 :
   $this -> test1( $_arg [ 0 ] );
   break ;
  case  2 :
   $this -> test2( $_arg [ 0 ] ,  $_arg [ 1 ]);
   break ;
  default :
   $this -> a = 0 ;
   $this -> b = 1 ;
   break ;
  }
 }

 function test1 ($a) {
  $this -> a =  $a ;
 }

 function test2 ($a,  $b) {
  $this -> a =  $a ;
  $this -> b =  $b ;
 }
}
?>

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
坏狼的PHP学习教程之第2天
Jun 15 PHP
php生成SessionID和图片校验码的思路和实现代码
Mar 10 PHP
php Xdebug 调试扩展的安装与使用.
Mar 13 PHP
解析mysql left( right ) join使用on与where筛选的差异
Jun 18 PHP
php将mysql数据库整库导出生成sql文件的具体实现
Jan 08 PHP
php curl请求信息和返回信息设置代码实例
Apr 27 PHP
详解PHP+AJAX无刷新分页实现方法
Nov 03 PHP
详解使用php调用微信接口上传永久素材
Apr 11 PHP
PHP使用第三方即时获取物流动态实例详解
Apr 27 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
针对PHP开发安全问题的相关总结
Mar 22 PHP
PHP下载文件函数与用法示例
Sep 27 PHP
PHP文件读取功能的应用实例
May 08 #PHP
php实现的IMEI限制的短信验证码发送类
May 05 #PHP
php自定义hash函数实例
May 05 #PHP
php结合安卓客户端实现查询交互实例
May 05 #PHP
php为字符串前后添加指定数量字符的方法
May 04 #PHP
支持中文、字母、数字的PHP验证码
May 04 #PHP
php替换字符串中间字符为省略号的方法
May 04 #PHP
You might like
php下使用strpos需要注意 === 运算符
2010/07/17 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
php cli模式下获取参数的方法
2017/05/05 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
2010/06/11 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
JavaScript导出Excel实例详解
2014/11/25 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
JavaScript手机振动API
2016/06/11 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
原生javascript制作贪吃蛇小游戏的方法分析
2020/02/26 Javascript
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
Python对象类型及其运算方法(详解)
2017/07/05 Python
利用python将图片转换成excel文档格式
2017/12/30 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
pandas将numpy数组写入到csv的实例
2018/07/04 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
研发工程师的岗位职责
2013/11/18 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
标准的毕业生自荐信
2014/04/20 职场文书
2014七年级班主任工作总结
2014/12/05 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏