這裡所說的重載其實是通過利用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日