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脚本的10个技巧(4)
Oct 09 PHP
php db类库进行数据库操作
Mar 19 PHP
php5 图片验证码实现代码
Dec 11 PHP
php json_encode奇怪问题说明
Sep 27 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
Jul 15 PHP
深入PHP中的HashTable结构详解
Jun 13 PHP
PHP中判断文件存在使用is_file还是file_exists?
Apr 03 PHP
PHP MPDF中文乱码的解决方式
Dec 08 PHP
PHP获取二维数组中某一列的值集合
Dec 25 PHP
php处理带有中文URL的方法
Jul 11 PHP
Zend Framework前端控制器用法示例
Dec 11 PHP
php变量与字符串的增删改查操作示例
May 07 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
Protoss兵种对照表
2020/03/14 星际争霸
PHP类中Static方法效率测试代码
2010/10/17 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
php如何利用pecl安装mongodb扩展详解
2019/01/09 PHP
PHPUnit + Laravel单元测试常用技能
2019/11/06 PHP
js AspxButton的客户端操作
2009/06/26 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
2013/03/21 Javascript
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
javascript回车完美实现tab切换功能
2014/03/13 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
jQuery限制图片大小的方法
2016/05/25 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
JS实现页面进入和返回定位到具体位置
2016/12/08 Javascript
常用的javascript设计模式
2017/01/11 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
2017/03/02 Javascript
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
2019/04/09 Javascript
详解vue-cli中使用rem,vue自适应
2019/05/06 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
vue 使用rules对表单字段进行校验的步骤
2020/12/25 Vue.js
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
Django Admin 实现外键过滤的方法
2017/09/29 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
解决Pycharm下面出现No R interpreter defined的问题
2018/10/29 Python
设置jupyter中DataFrame的显示限制方式
2020/04/12 Python
python小白学习包管理器pip安装
2020/06/09 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
css3media响应式布局实例
2016/07/08 HTML / CSS
豪华复古化妆:Besame Cosmetics
2019/09/06 全球购物
迎元旦广播稿
2014/02/22 职场文书
文明家庭事迹材料
2014/12/20 职场文书
LayUI+Shiro实现动态菜单并记住菜单收展的示例
2021/05/06 Javascript
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis