由於在php是弱類型語言,並不像c++一樣可以通過改變函數返回值的類型和函數的參數個數進行重載!但在實際開發中可能會有重載函數的需求,爲了滿足開發需求,我們可以通過魔術方法__call()來實現函數重載!
class Templates {
<span style="white-space:pre"> </span>function __call($fun,$argv){
<span style="white-space:pre"> </span>if($fun=="assign"){
<span style="white-space:pre"> </span>if(count($argv)==1){
<span style="white-space:pre"> </span>$this->assign1($argv[0]);
<span style="white-space:pre"> </span>}
elseif(count($argv)==2){
$this->assign2($argv[0],$argv[1]);
}
}
}
//assign函數接受參數
function assign2($key,$value){
if(isset($key)&&!empty($value)){
$this->val["$key"]=$value;
}else{
exit("ERROR:請設置變量");
}
}
//重載assign函數接受數組
function assign1($array){
if(!empty($array)){
foreach($array as $key => $value){
$this->val["$key"]=$value;
}
}else{
exit("ERROR:請設置數組");
}
}
}