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 mssql 日期出现中文字符的解决方法
Mar 10 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
Jun 03 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
Jan 26 PHP
分享一个超好用的php header下载函数
Jan 31 PHP
php实现文件下载代码分享
Aug 19 PHP
smarty缓存用法分析
Dec 16 PHP
PHP随机生成信用卡卡号的方法
Mar 23 PHP
Thinkphp连表查询及数据导出方法示例
Oct 15 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
May 23 PHP
PHP parse_ini_file函数的应用与扩展操作示例
Jan 07 PHP
PHP 枚举类型的管理与设计知识点总结
Feb 13 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
德劲1104的电路分析与改良
2021/03/01 无线电
php密码生成类实例
2014/09/24 PHP
Smarty日期时间操作方法示例
2016/11/15 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
jQuery学习笔记之jQuery中的$
2015/01/19 Javascript
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
jquery实现二级导航下拉菜单效果
2015/12/18 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
node.js的事件机制
2017/02/08 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
2017/10/31 Javascript
简述Angular 5 快速入门
2017/11/04 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
通过vue-cli3构建一个SSR应用程序的方法
2018/09/13 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
Vue 解决多级动态面包屑导航的问题
2019/11/04 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
vue实现登录功能
2020/12/31 Vue.js
Python减少循环层次和缩进的技巧分析
2016/03/15 Python
python内置函数:lambda、map、filter简单介绍
2017/11/16 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
pandas数据处理进阶详解
2019/10/11 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
基于pytorch中的Sequential用法说明
2020/06/24 Python
Sql面试题
2013/03/20 面试题
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
四年的个人工作自我评价
2013/12/10 职场文书
社区居务公开实施方案
2014/03/27 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL