php __call ist eine der magischen PHP-Methoden. Wenn das Programm eine Methode aufruft, die in der aktuellen Klasse nicht deklariert ist oder keine Aufrufberechtigung hat, wird die __call-Methode aufgerufen.
Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer
PHP-Magiemethode __call
__call ist eine der magischen Methoden, wenn das Programm etwas aufruft, das nicht vorhanden ist in der aktuellen Klasse deklariert oder wenn keine Berechtigung zum Aufrufen einer Methode vorliegt, wird die __call-Methode
class test { public function emptyFunc(){ $getArgs = func_get_args(); $funcName = $getArgs[0]; //$params = array_slice($getArgs, 1); //var_dump($params); // this is params return $funcName . ' function is not exists'; } public function __call($m, $params) { $arr[] = $m; $arr = array_merge($arr, $params); return call_user_func_array(array($this, 'emptyFunc'), $arr); } protected function nowToTest(){ return 'this is nowToTest'; } } $testObj = new test(); var_dump($testObj->nowToTest('params1','params1')); //var_dump result => string(29) "nowToTest function is not exists" 如上test类中,nowToTest方法是存在的,但修饰这方法的是protected(保护),所以实例出来的对象没权限执行,这时就跑到__call中去了. _call()有2个参数,第一个m是当前调用方法的名字,这里是'nowToTest',第二个m是当前调用方法的名字,这里是 ′ nowToTest ′
aufgerufen. Der zweite Parameter ist der Parameter, der beim Aufruf der Methode „nowToTest“ übergeben wird. In $params als Array zusammengefasst.
Die Funktion der PHP-Methode call_user_func_array(method, method, params) besteht darin, die Methode method aufzurufen. Wenn sich die Methode in der Klasse befindet, verwenden Sie einfach die obige Array-Form Rufen Sie es auf. Hier wird die emptyFunc-Methode aufgerufen. Die Funktion von func_get_args() besteht darin, alle übergebenen Parameter in Form eines Arrays abzurufen. Wenn diese Parameter in __call übergeben werden, ist der erste Parameter der Methodenname. Das zurückgegebene Endergebnis ist also
"nowToTest function is not exists"
Empfohlenes Lernen: „PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWas ist der PHP-Magic-Methodenaufruf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!