函數重載的替代方法-偽重載,下面看一個具體的實例代碼。
<? 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 ; } } ?>
以上所述就是本文的全部內容了,希望大家能夠喜歡。