php函数重载的替代方法--伪重载详解
更新时间:2015年05月08日 11:25:58 投稿:hebedich
对于弱类型语言来说,PHP函数重载,并不像一般的OOP那样。而弱类型本来就不区分,所以无法通过这些来实现。但是,可以通过下面的方法来实现简单的伪重载吧。
函数重载的替代方法-伪重载,下面看一个具体的实例代码。
<? 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 ; } } ?>
以上所述就是本文的全部内容了,希望大家能够喜欢。
您可能感兴趣的文章:
相关文章
CI(Codeigniter)的Setting增强配置类实例
这篇文章主要介绍了Codeigniter的Setting增强配置类,结合实例形式较为详细的分析了Codeigniter增强配置类的具体实现步骤与相关技巧,需要的朋友可以参考下2016-01-01Thinkphp 在api开发中异常返回依然是html的解决方式
今天小编就为大家整理了一篇Thinkphp 在api开发中异常返回依然是html的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-10-10Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
很早就想在自己的机子上搭建PHP的开发环境,今天难得有这个机会,在网上找了一些教程和程序,实践了一把,过程是很艰辛的,因为遇到了很多的问题,在这里总结一下。2009-06-06Yii框架获取当前controlle和action对应id的方法
这篇文章主要介绍了Yii框架获取当前controlle和action对应id的方法,可实现获取当前controlle或action对应id的功能,是非常实用的技巧,需要的朋友可以参考下2014-12-12
最新评论