在php的物件導向裡,用得最多的魔術方法一定是__construct
方法。而在很多很多地方,__call
方法和__callstatic
方法用得地方一樣很多,而且特別好用呢。下面舉個應用的例子。
class
pay
/*** magic static call.
** @param string $method
* @param array $params**/
public
function
__callstatic
($method, $params)
/*** create a instance. 建立乙個例項
** @param string $method**/
protected
function
create
() throw
new invalidgatewayexception("gateway not exists");
}/**
* make a gateway. 實現乙個支付入口
** @param string $gateway**/
protected
function
make
($gateway)
throw
}}複製**
上面就是乙個比較完整的過程了。
這個名為class pay
的很好起到了乙個將不同的支付需求分發出去。
// 假設這裡已經寫好了pay類的命名空間
$config = [
...];$wechat = pay::wechat($config) // 建立wechat類的例項
// 如果是支付寶,那麼..
$config = [
...];$alipay = pay::alipay($config) // 建立alipay類的例項
複製**
為什麼可以達到這個效果呢,整個流程:
最後__call
方法其實和__callstatic
類似 只是用->
呼叫而已。
PHP 魔法方法之 call和
call和 callstatic方法都可用於防止呼叫不存在的方法而出現報錯,但也能用於方法的動態建立,這在mvc等框架設計中是很有用的語法。call方法原型如下 mixed call string name array arguments 當呼叫乙個不可訪問的方法 如未定義,或者不可見 時,call...
PHP中的魔術方法之 call 和
對於這兩個方法的使用,不做過多的解釋,通過例項 和結果,大家可以更加清晰的認識兩者的作用 1.call 方法。當呼叫乙個沒有在類中宣告的方法時,可以呼叫 call 方法代替宣告乙個方法。接受方法名和陣列作為引數。例項 class test list new test list say 1,2,3 執...
PHP魔術方法之 call與
php view plain copy class human 魔術方法 call method 獲得方法名 arg 獲得方法的引數集合 public function call method,arg 魔術方法 callstatic public static function callstatic...