首頁  >  文章  >  後端開發  >  php func_get_args和func_num_args函式用法詳解

php func_get_args和func_num_args函式用法詳解

伊谢尔伦
伊谢尔伦原創
2017-07-08 11:16:151833瀏覽

學習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'); //调用func2


2、##程式碼如下:

function test($name="小李",$age="23"){    
echo $name."  ".$age;    
}    
test();    
echo "<br/>";    
test("a");    
echo "<br/>";    
test("a","b");

2、

使用預設值

,從而根據輸入,得到自己想要的結果,程式碼如下:

#程式碼如下:

<?php  
class OverLoad{  
function call($name, $args)  
{  
  if($name==&#39;overloadFun&#39;)  
  {  
   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();  
$test->overloadFun()."<br />".   
$test->overloadFun(1)."<br />".   
$test->overloadFun(1,2)."<br />";  
?>

3、利用call ($name, $arg) 函數進行處理,程式碼如下:

######程式碼如下:###rrreee###有了這樣的方法之後我們就可以利用它們來實作簡單函數重載了,但有一點要註明的是php 作為一種弱類型語言,本身不能像強類型如java,c++那樣,直接的實現重載,至少現在不可以以後版本會不會有我們不知道.# ##

以上是php func_get_args和func_num_args函式用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn