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 相关文章推荐
一次编写,随处运行
Oct 09 PHP
利用PHP制作简单的内容采集器的代码
Nov 28 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
Apr 22 PHP
基于PHP CURL获取邮箱地址的详解
Jun 03 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
php中文繁体和简体相互转换的方法
Mar 21 PHP
是 WordPress 让 PHP 更流行了 而不是框架
Feb 03 PHP
深入理解PHP JSON数组与对象
Jul 19 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
Dec 14 PHP
PHP利用二叉堆实现TopK-算法的方法详解
Apr 24 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 PHP
TP5框架实现上传多张图片的方法分析
Mar 29 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
星际中的相关伤害
2020/03/04 星际争霸
PHP 数组基础知识小结
2010/08/20 PHP
高性能PHP框架Symfony2经典入门教程
2014/07/08 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
thinkphp中U方法按路由规则生成url的方法
2018/03/12 PHP
Javascript Tab 导航插件 (23个)
2009/06/11 Javascript
入门基础学习 ExtJS笔记(一)
2010/11/11 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
JavaScript中的eval()函数使用介绍
2014/12/31 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
基于JavaScript实现飘落星星特效
2017/08/10 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
浅谈vue限制文本框输入数字的正确姿势
2019/09/02 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
浅谈JavaScript 声明提升
2020/09/14 Javascript
详解如何使用React Hooks请求数据并渲染
2020/10/18 Javascript
[47:45]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第一场 2月26日
2021/03/11 DOTA
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
输入N,打印N*N矩阵
2012/02/20 面试题
本科生详细的自我评价
2013/09/19 职场文书
早会主持词
2014/03/17 职场文书
爱情保证书
2015/01/17 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
python异常中else的实例用法
2021/06/15 Python
Python MNIST手写体识别详解与试练
2021/11/07 Python