程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php函數重載的替代方法--偽重載詳解,重載詳解

php函數重載的替代方法--偽重載詳解,重載詳解

編輯:關於PHP編程

php函數重載的替代方法--偽重載詳解,重載詳解


函數重載的替代方法-偽重載,下面看一個具體的實例代碼。

<? 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 ;
 }
}
?>

以上所述就是本文的全部內容了,希望大家能夠喜歡。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved