魔術方法 call 和

2021-07-10 08:24:58 字數 1348 閱讀 6993

php 5.3 後新增了 __call 與__callstatic 魔法方法。

__call 當要呼叫的方法不存在或許可權不足時,會自動呼叫__call 方法。

__callstatic 當呼叫的靜態方法不存在或許可權不足時,會自動呼叫__callstatic方法。

__call($funcname, $arguments)

__callstatic($funcname, $arguments)

引數說明:

$funcnamestring 呼叫的方法名稱。

$argumentsarray 呼叫方法時所帶的引數。

[php]view plain

copy

print

? <?php  

class

human  

//魔術方法__call

/*$method 獲得方法名

$arg 獲得方法的引數集合

*/public

function

__call(

$method

,$arg

)  //魔術方法__callstatic

public

static

function

__callstatic(

$method

,$arg

)  }  

$li=

newhuman();  

$li->say(1,2,3);  

/*呼叫乙個未定義的方法

fatal error: call to undefined method human::say() in d:\wamp\www\php\59.php on line 8

*/$li

->t(

'a',

'b');  

/* __call是呼叫不可見(不存在或無許可權)的方法時,自動呼叫 

$lisi->say(1,2,3);-----沒有say()方法----> __call('say',array(1,2,3))執行 

*/human::cry('痛哭'

,'鬼哭'

,'號哭'

);  

/* __callstatic 是呼叫不可見的靜態方法時,自動呼叫. 

human::cry('a','b','c')----沒有cry方法---> human::__callstatic('cry',array('a','b','c')); 

*/?>  

對於魔術方法 call,

call方法在物件方法不存在的時候被呼叫 callstatic方法在呼叫物件靜態方法不存在的時候被呼叫 例如class car new car color class bus bus issale 其實上面的解釋在某些情況下是正確的。但是在一些特殊情形,如果按照這個解釋來理解,就會覺得結果不可思議了...

魔術方法之 call

1.call 作用,當呼叫不存在的方法時,會呼叫該方法。實際應用,當程式呼叫不存在的方法時,意外導致程式終止。或者當你呼叫了受保護的或者是私人的方法時,也會自動呼叫 call方法 結果 2.callstatic 形式 callstatic name,arr 應用場景 1 物件呼叫未定義的靜態函式時,...

魔術方法之 call與

class human 魔術方法 call param string method 獲得方法名 param string arg 獲得方法的引數集合 public function call method,params 魔術方法 callstatic public static function c...