PHP利用func_get_args()和func_num_args()函数实现函数重载
学习php的朋友都知道php本身是没有函数重载这一说的更没说像java,c那样使用方法,但如果我们深入了解一下会发现要吧在php中使用func_get_args()和func_num_args()函数实现函数重载,下面来举两个函数重载例子.这两个函数实现函数的重载.
1、默认参数,如果一个函数里面,对不是必须参数,添加相应的默认值,就可以完成相应的功能,代码如下:
function overloadFun( $param1 , $param2 = '1' , $param3 = true) { // do something }利用函数func_get_args()和call_user_func_array(),PHP代码如下:
function rewrite() { $args = func_get_args(); if (func_num_args() == 1) { func1( $args [0]); } else if (func_num_args() == 2) { func2( $args [0], $args [1]); } } function func1( $arg ) { echo $arg ; } function func2( $arg1 , $arg2 ) { echo $arg1 , ' ' , $arg2 ; } rewrite( 'PHP' ); //调用func1 rewrite( 'PHP' , 'China' ); //调用func22.使用默认值,从而根据输入,得到自己想要的结果,代码如下:
function test( $name = "小李" , $age = "23" ){ echo $name . " " . $age ; } test(); echo "<br/>" ; test( "a" ); echo "<br/>" ; test( "a" , "b" );3.利用__call($name, $arg) 函数进行处理,代码如下:
<?php class OverLoad{ function __call( $name , $args ) { if ( $name == 'overloadFun' ) { switch ( count ( $args )) { case 0: $this ->overloadFun0(); break ; case 1: $this ->overloadFun1( $args [0]); break ; case 2: $this ->overloadFun2( $args [0], $args [1]); break ; default : //do something break ; } } } function overloadFun0() { echo 0; } function overloadFun1( $var1 ) { echo $var1 ; } function overloadFun2( $var1 , $var2 ) { echo $var1 + $var2 ; } } $test = new OverLoad(); //开源代码phpfensi测试数据 $test ->overloadFun(). "<br />" . $test ->overloadFun(1). "<br />" . $test ->overloadFun(1,2). "<br />" ; ?>有了这样的方法之后我们就可以利用它们来实现简单函数重载了,但有一点要注明的是php 作为一种弱类型语言,本身不能像强类型如java,c++那样,直接的实现重载,至少现在不可以以后版本会不会有我们不知道.
查看更多关于PHP利用func_get_args()和func_num_args()函数实现函数重的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did31093