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开发文件系统实例讲解
Oct 09 PHP
php 数组的指针操作实现代码
Feb 08 PHP
Zend的MVC机制使用分析(一)
May 02 PHP
destoon文章模块调用企业会员资料的方法
Aug 22 PHP
smarty实现多级分类的方法
Dec 05 PHP
php+xml编程之SimpleXML的应用实例
Jan 24 PHP
php的GD库imagettftext函数解决中文乱码问题
Jan 24 PHP
php实现的一个简单json rpc框架实例
Mar 30 PHP
thinkPHP下的widget扩展用法实例分析
Dec 26 PHP
php图像处理函数imagecopyresampled用法详解
Dec 02 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
php7安装mongoDB扩展的方法分析
Aug 02 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往windows中添加用户
2006/12/06 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
php简单实现批量上传图片的方法
2016/05/09 PHP
PHP生成可点击刷新的验证码简单示例
2016/05/13 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
每天一篇javascript学习小结(String对象)
2015/11/18 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
JavaScript中instanceof运算符的使用示例
2016/06/08 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
2017/04/14 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
Python实现的快速排序算法详解
2017/08/01 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
python绘制漏斗图步骤详解
2019/03/04 Python
python绘制评估优化算法性能的测试函数
2019/06/25 Python
python生成特定分布数的实例
2019/12/05 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
python绘制汉诺塔
2021/03/01 Python
HTML5之tabindex属性全面解析
2016/07/07 HTML / CSS
HTML5中form如何关闭自动完成功能的方法
2018/07/02 HTML / CSS
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
专科毕业生求职简历的自我评价
2013/10/12 职场文书
外贸采购员求职的自我评价
2013/11/26 职场文书
后勤主管岗位职责
2014/03/01 职场文书
党员政治学习材料
2014/05/14 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
2014年司法所工作总结
2014/11/22 职场文书
WebRTC记录音视频流(web技术分享)
2022/02/24 Javascript