天天看點

php7 方法重載,PHP中實作重載的方法

這裡所說的重載其實是通過利用PHP一些特殊的機制來實作的,在他們的參數清單中,可以對參數賦初值,如果有初值,當調用的時候沒有傳入這個參數的時候,就會将初值作為參數的預設值。有預設值的參數,在調用的時候就可以不傳入,我們在函數體裡面判斷某參數是否與預設值相同,就可以知道目前應當執行什麼代碼了。下面是一個示例:

function changeDateFormat($intDate,$divSign1=null,$divSign2=null,$divSign3=null){//通過兩個可選參數實作PHP所不支援的重載

if($divSign2==null && $divSign3==null){//當後兩個參數為空時表示隻通過一個分隔符來格式化日期

if($divSign1==null){//如果隻有一個參數(沒有分隔符參數),則表示這是一個已經加了分隔符的日期資料,就将分隔符去掉,還原成原來的格式

return substr($intDate,0,4).substr($intDate,5,2).substr($intDate,7,2);

}else{//如果有兩個參數,則第二個作為分隔符參數分别用來分隔年和月,月和日

return substr($intDate,0,4)."$divSign1".substr($intDate,4,2)."$divSign1".substr($intDate,6,2);

}

}else{//當後兩個參數為空時表示通過三個分隔符來格式化日期

return substr($intDate,0,4)."$divSign1".substr($intDate,4,2)."$divSign2".substr($intDate,6,2)."$divSign3";

}

}

那在調用的時候怎樣展現出重載的呢?看看下面的例子就知道了:

調用語句:                                                                               傳回

changeDateFormat(20091018);                                           2009-10-18

changeDateFormat(20091018,"/");                                      2009/10/18

changeDateFormat(20091018,"/","-");                                 2009/10-18

changeDateFormat(20091018,"年","月","日");                     2009年10月18日