How to use php pseudo-overloading? For weakly typed languages, PHP function overloading is not like general OOP. Weak types are not inherently differentiated, so they cannot be implemented through these. This article shares how to implement pseudo-overloading in PHP, hoping it will be helpful to everyone.
Alternative method of function overloading-pseudo overloading, let’s look at a specific example code below.
<? 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 ; } } ?>
Related recommendations:
PHP overloaded method __call( )
Basic structure of PHP function
The above is the detailed content of The use of php pseudo-overloading. For more information, please follow other related articles on the PHP Chinese website!