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 相关文章推荐
用Socket发送电子邮件
Oct 09 PHP
PHP制作图型计数器的例子
Oct 09 PHP
PHP中如何调用webservice的实例参考
Apr 25 PHP
解析MySql与Java的时间类型
Jun 22 PHP
使用php判断服务器是否支持Gzip压缩功能
Sep 24 PHP
用PHP实现弹出消息提示框的两种方法
Dec 17 PHP
php实现获取及设置用户访问页面语言类
Sep 24 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
Nov 24 PHP
PHP处理会话函数大总结
Aug 05 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 PHP
PHP微信开发之模板消息回复
Jun 24 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
Mar 25 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.MVC的模板标签系统(三)
2006/09/05 PHP
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
推荐一款MAC OS X 下php集成开发环境mamp
2014/11/08 PHP
php 实现进制相互转换
2016/04/07 PHP
php的socket编程详解
2016/11/20 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
JavaScript实现动态增加文件域表单
2009/02/12 Javascript
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
Backbone.js的一些使用技巧
2015/07/01 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
JS实现支持Ajax验证的表单插件
2016/03/24 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
js实现带简单弹性运动的导航条
2017/02/22 Javascript
使用javascript做在线算法编程
2018/05/25 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
Python常用随机数与随机字符串方法实例
2015/04/09 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
python list多级排序知识点总结
2019/10/23 Python
Python识别验证码的实现示例
2020/09/30 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
亿阳信通股份有限公司笔试题(C#)
2016/03/04 面试题
基督教婚礼主持词
2014/03/14 职场文书
学员自我鉴定
2014/03/19 职场文书
化工操作工岗位职责
2014/04/29 职场文书
2015幼儿园新学期寄语
2015/02/27 职场文书
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技