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 中c函数重载,php函数重载的替代方法--伪重载详解相关推荐

  1. php是否直接支持函数的重载,php函数重载的替代方法--伪重载详解

    对于弱类型语言来说,PHP函数重载,并不像一般的OOP那样.而弱类型本来就不区分,所以无法通过这些来实现.但是,可以通过下面的方法来实现简单的伪重载吧. 函数重载的替代方法-伪重载,下面看一个具体的实 ...

  2. python中paste函数的作用_PIL图像处理模块paste方法简单使用详解

    python2中提供了PIL基础的图像数据出来模块,在python3中更名为了pillow模块,名字虽然发生了改变,但是提供的方法和功能都是一样的,对于日常基础的图像数据处理分析来说是足够用了的,现在 ...

  3. python中必须使用import引入模块_Python之import方法引入模块详解

    在python用import或者from-import或者from-import-as-来导入相应的模块,作用和使用方法与C语言的include头文件类似.其实就是引入某些成熟的函数库和成熟的方法,避 ...

  4. c++中整形输入逗号_C语言输入和输出方法amp;技巧详解

    引言 今天刷题,写了好久写完了,一提交0分,改了好久没改对1分,看了一下别人的代码,又简洁又直观,代码量又少,还是满分,心理不平衡了,仔细看了一下,对输入输出的处理处理的好好.吃了这方面的亏,干脆借着 ...

  5. mysql去重函数的使用方法_MySQL中使用去重distinct方法的示例详解

    一 distinct 含义:distinct用来查询不重复记录的条数,即distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而 ...

  6. vue在created调用点击方法_vue.js中created方法的使用详解

    这次给大家带来vue.js中created方法的使用详解,使用vue.js中created方法的注意事项有哪些,下面就是实战案例,一起来看一下. 这是它的一个生命周期钩子函数,就是一个vue实例被生成 ...

  7. 站长在线Python精讲:在Python中使用正则表达式的sub()方法替换字符串详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中使用正则表达式的sub()方法替换字符串详解>. 在Python中使用正则表达式的sub()方法替换字符串. ...

  8. vue中 点击事件的写法_vue实现绑定事件的方法实例代码详解

    一.前言 vuejs中的事件绑定,使用来完成的,这里函数名是定义在Vue实例中的methods对象中的,Vue实例可以直接访问其中的方法. 二.事件绑定方式 1. 直接在标签中写js方法 执行方法的第 ...

  9. python frozenset_Python中set与frozenset方法和区别详解

    set(可变集合)与frozenset(不可变集合)的区别: set无序排序且不重复,是可变的,有add(),remove()等方法.既然是可变的,所以它不存在哈希值.基本功能包括关系测试和消除重复元 ...

最新文章

  1. springboot 各种日志打印
  2. 基于Android Ndk/Jni的内存泄漏检测
  3. android ijk 播放器,ijkplayer 播放器:在Android端进行native调试
  4. numpy数组打印格式设置
  5. 做本地服务业O2O要点有哪些 O2O营销模式未来发展趋势是什么?
  6. html 一轮多图轮播,通过html+css3实现图片轮播切换
  7. JavaFX Scene Builder的使用
  8. 电力行业工程设计资质怎么办?专业类别有哪些?
  9. #论文学习#第二篇:CNN-SLAM: Real-time dense monocular SLAM with learned depth prediction
  10. 西南大学计算机学院导师,西南大学计算机与信息科学学院研究生导师简介-胡小方...
  11. AI证件照背景色修改,几行代码搞定
  12. 《BiLSTM with Multi-Polarity Orthogonal Attention for Implicit Sentiment Analysis》论文阅读笔记
  13. SuperMap iServer11i新功能----图例的发布和使用
  14. java实现Stripe信用卡支付
  15. 远程linux云主机,Linux实验室 远程连接Linux云主机方法
  16. android assets大小限制200m,使用 AssetsManager 解决微信小游戏包体积尺寸限制问题
  17. 英伟达Q3财报解读:营收连续四季度下滑 下一个增长拐点何时来?
  18. 黑得漂亮!SyScan360黑客大会展示17秒攻陷IE
  19. raid卡超级电容和电池的区别
  20. python制作英语小词典_如何用python(django)创建英语词典应用程序?

热门文章

  1. 久未更 ~ 四之 —— Vsftpd出现 Failed to start Vsftpd ftp daemon错误
  2. STM32出现HardFault故障的解决方法
  3. [转]Decide.com是怎么做商品价格预测的
  4. [转]MSP430学习心得---时钟
  5. 使用instantclient_11_2和PL/SQL Developer工具包连接oracle 11g远程数据库
  6. 今生一定娶美女 不遇美女终生不娶
  7. spring-boot-devtools热加载不起作用
  8. C语言若干知识点归记
  9. ado显示,删除后刷新重新显示
  10. POJ 3468 线段树+lazy标记