首頁  >  文章  >  後端開發  >  PHP函數重載分析及實例

PHP函數重載分析及實例

墨辰丷
墨辰丷原創
2018-05-16 13:40:181506瀏覽

本篇主要介紹PHP函數重載分析及實例,有興趣的朋友參考下,希望對大家有幫助。

對於弱型別語言來說,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函式重載的替代方法_PHP教學

php函式重載的替代方法--偽重載詳解,重載詳解_PHP教學

以上是PHP函數重載分析及實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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