网络编程
位置:首页>> 网络编程>> php编程>> php函数重载的替代方法--伪重载详解

php函数重载的替代方法--伪重载详解

作者:hebedich  发布时间:2023-11-18 10:24:06 

标签:php,伪重载

函数重载的替代方法-伪重载,下面看一个具体的实例代码。


<? 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 ;
}
}
?>

以上所述就是本文的全部内容了,希望大家能够喜欢。

0
投稿

猜你喜欢

  • 本篇主要将react全家桶的产品非常精炼的提取了核心内容,精华程度堪比精油。各位大人,既然来了,客官您坐,来人,给客官看茶~~redux前言
  • 从CNNIC在2009年的报告中可以看到,超过80%的网民购物之前都要看评论(包括本站、其他站评论),超过80%的网民都比较信任口碑(包括网
  • 外联接。外联接可以是左向外联接、右向外联接或完整外部联接。 在 FROM 子句中指定外联接时,可以由下列几组关键字中的一组指定:LEFT J
  • 一段重用很高的ajax代码,可以套用    <!DOCTYPE HTML 
  • 在用 Javascript 验证表单(form)中的单选框(radio)是否选中时,很多新手都会遇到问题,原因是 radio 和普通的文本框
  • 很久没有更新blog了,这段时间实在是发生了很多的事,累身累心。但还是有很多想做的事,比如更新merceCSS、把一直以来所总结的有关模块化
  • SQL Server数据库涉及到的数据仓库概念:1.多维数据集:多维数据集是联机分析处理 (OLAP) 中的主要对象,是一项可对数据仓库中的
  • 大家知道,Microsoft为了更好地预防恶意用户和攻击者的攻击,在默认情况下,没有将 IIS6.0 安装到 Windows Server
  • 目录:分析和设计组件编码实现和算法用 Ant 构建组件测试 JavaScript 组件我们走到哪儿了?前两期思考了太多东西,你是否已有倦意?
  • Yoho, 大家好,又是我哟~ 首先抱歉让大家等了这么多时间。最近实在比较繁忙啦。不过我还是会尽量抽空出来给大家讲点有的没的,欢迎大家继续
  • 常用Mysql查询语句记录一、授权1.授权本地用户对所有数据库具有所有权限> grant all privileges on
  • 本文实例为大家分享了opencv实现图像旋转效果的具体代码,供大家参考,具体内容如下图像旋转:在opencv中首先根据旋转角度和中心获取旋转
  • 昨天有人在群里问图1的边框效果是否能实现。 边框效果图有人给出答案,需要嵌套一个元素实现。我当时粗粗写了个测试页面,但是时间太晚了,也没有细
  • 这一段时间,我在进行“09帮助中心升级”项目,负责其中的白板和视觉设计,总算和Axure有了第一次的正式会晤。由于之前已经零散地学习过一些A
  • 1. 用Dreamweaver 4.0制作闪动的Flash按钮选择菜单Insert→Interactive Images→Flash But
  • 本文介绍了SpringBoot 中使用JSP的方法示例,分享给大家,具体如下:依赖:  <parent>  
  • 前阵子刚完成一个B/S架构的学校办公系统,体会就是表太多,文件太多,而每个文件中类似的操作(代码)也太多了,例如学生信息和教师信息操作,st
  • 本教程配置好后一劳永逸,不用再配置,每次只需要选择 Python 解释器即可打开KBEngine的服务器项目文件夹(资产目录)其主要工程目录
  • 如何使整个页面内容居中,如何使高度适应内容自动伸缩。这是学习CSS布局最常见的问题。下面就给出一个实际的例子,并详细解释。(本文的经验和是蓝
  • 下面说说主要实现思路: 1、存取图片 (1)、将图片文件转换为二进制并直接存进sql server //UploadHelper.cs //
手机版 网络编程 asp之家 www.aspxhome.com