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 相关文章推荐
一个捕获函数输出的函数
Feb 14 PHP
php自动适应范围的分页代码
Aug 05 PHP
UCenter中的一个可逆加密函数authcode函数代码
Jul 20 PHP
那些年我们错过的魔术方法(Magic Methods)
Jan 14 PHP
PHP读取大文件的多种方法介绍
Apr 04 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
May 12 PHP
PHP控制前台弹出对话框的实现方法
Aug 21 PHP
php简单压缩css样式示例
Sep 22 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
May 20 PHP
PHP中phar包的使用教程
Jun 14 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
Jun 06 PHP
Yii框架Session与Cookie使用方法示例
Oct 14 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查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
关于IIS php调用com组件的权限问题
2012/01/11 PHP
测试php函数的方法
2013/11/13 PHP
php使用curl访问https示例分享
2014/01/17 PHP
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
php批量删除cookie的简单实现方法
2015/01/26 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
非常好用的JsonToString 方法 简单实例
2013/07/18 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
Bootstrap模块dropdown实现下拉框响应
2016/05/22 Javascript
BootStrap的两种模态框方式
2017/05/10 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
浅谈Vue数据响应
2018/11/05 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
IntelliJ IDEA编辑器配置vue高亮显示
2019/09/26 Javascript
详解JavaScript数据类型和判断方法
2020/09/04 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
python字典一键多值实例代码分享
2019/06/14 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
python 根据字典的键值进行排序的方法
2019/07/24 Python
python自动生成model文件过程详解
2019/11/02 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
基于python实现简单网页服务器代码实例
2020/09/14 Python
老教师工作总结的自我评价
2013/09/27 职场文书
党员学习十八大感想
2014/01/17 职场文书
光盘行动倡议书
2014/02/02 职场文书
实习会计求职自荐信范文
2014/03/10 职场文书
2014年质检员工作总结
2014/11/18 职场文书
公司清洁工岗位职责
2015/04/15 职场文书
投诉信格式范文
2015/07/02 职场文书