PHP中的java方式重載

有的時候,可以調用網站建設可變參數的同一個方法會很是方便。PHP可以定義帶默認值的可選參數使這一作法成爲可能。php

能夠在php5中用__call()實現這種方法重載。下面來看一個示例。假設要用重載行爲,那麼要將其放到抽象父類中。網站

Php代碼
  1. abstract class OverloadableObject{  
  2.     function __call($name$args){  
  3.       $method = $name."_".count($args);   
  4.       if(!method_exists($this,$method)){  
  5.            throw new Exception("Call to undefined method".get_class($this)."::$method");  
  6.       }     
  7.        return call_user_func_array(array($this,$method),$args);  
  8.    
  9.    }  
  10. }  

這個類方法的主要行爲都在
Php代碼
  1. $method = $name."_".count($args);   
顯示一行代碼中定義了。若是調用未定義方法,__call()方法會生成一個新方法,其名稱由原始方法和參數個數構成,用下劃線分開。而後用新生成的方法名調用改方法,將原來的參數也一塊兒傳遞過去。

如今,若是要使用一個名爲multiply的重載方法,能夠使用兩個或三個參數來調用它,並在每種狀況下進行相應操做,能夠分別用兩個方法:multiply_2和multiply_3this

Php代碼
  1. class Multiplier extends OverloadableObject{  
  2.    function multiply_2($one,$two){  
  3.      return $one*$two;   
  4.    }  
  5.    function multiply_3($one,$two,$three){  
  6.      return $one*$two*$three;  
  7.    }  
  8. }  
爲了使用這段代碼,只調用帶有兩個或三個參數的multiply方法。

$multi = new Multiplier;spa

echo $multi->multiply(5,6)."\n";three

echo $multi->multiply(5,6,7)."\n"網站建設; (fblww-0309)ip

相關文章
相關標籤/搜索