首頁 >後端開發 >php教程 >什麼是php函數重載?函數重載用法詳解

什麼是php函數重載?函數重載用法詳解

伊谢尔伦
伊谢尔伦原創
2017-07-08 09:25:391659瀏覽

對於弱型別語言來說,PHP函數重載,並不像一般的OOP。

因為函數重載必須滿足兩個條件:

1、函數參數的個數不一樣。

2、參數的型別不一樣。

這兩點,PHP都沒有辦法滿足,您可以對函數多加參數,只是相當於多傳了個臨時變數。而弱類型本來就不區分,所以無法透過這些來實現。

但是,可以透過下面的方法來實現簡單的偽重載吧。

1、預設參數

從這個上面就可以看到,如果一個函數裡面,我對不是必須參數填入新增對應的預設值,就可以完成對應的功能。

  function overloadFun($param1, $param2 = '1',$param3 = true)
  {
  // do something 
  }

2、利用函數func_get_args()和call_user_func_array(),詳細的幫助參考PHP手冊

利用一個有規則的函數進行調用,以方便統一管理。

function overloadFun()  
{  
    // overloadFun可以随便定义,但为了命名规范,建议宝贝为与此函数名一样,  
    // 后面的尾随数值为参数个数,以方便管理  
$name="overloadFun".func_num_args();   
  return call_user_func_array(array($this,$name), func_get_args());       
}  
  
function overloadFun0()  
{  
    // do something  
}  
  
function overloadFun1()  
{  
    // do something  
}  
  
function overloadFun2()  
{  
    // do something  
}

3、利用call($name, $arg) 函數來處理。

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()  
{  
    // do something  
}  
  
function overloadFun1()  
{  
    // do something  
}  
  
function overloadFun2()  
{  
    // do something  
}

總結,這幾種方法,都可以實現偽重載,基本第2種和第3種,內容可以互相處理判斷。

文中只是給了方法,可能還有許多細節地方需要處理,例如,判斷整數、類別等。

不過,根據上面的內容,php可能永遠不會出現真正的重載,那樣就會失去語言本身的意義了。

以上是什麼是php函數重載?函數重載用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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