Heim >Backend-Entwicklung >PHP-Problem >Zu welcher Kategorie gehört die __call-Funktion von PHP?
Die __call()-Funktion von PHP ist eine magische Funktion. Die sogenannte PHP-Magiefunktion bedeutet einfach, dass sie in PHP einen bestimmten Namen hat – alle beginnend mit zwei Unterstrichen, und der PHP-Interpreter findet automatisch eine Methode und laufen, wenn ein bestimmtes Timing erreicht ist.
Wenn wir eine nicht zugängliche Mitgliedsmethode aufrufen, wird die magische Methode __call aufgerufen.
Nein Die aufgerufene Mitgliedsmethode bezieht sich auf (1. Die Mitgliedsmethode existiert nicht, 2. Die Mitgliedsmethode ist geschützt oder privat) (Empfohlenes Lernen: PHP-Video-Tutorial)
Wir hoffen nur, dass in Rufen Sie unzugängliche Mitgliedsmethoden direkt auf (privat, geschützt) von außerhalb der Klasse.
Fallbeschreibung
<?php header('content-type:text/html;charset=utf-8'); //__call魔术方法 class Monk{ public $name; protected $hobby; public function __construct($name, $hobby){ $this->name = $name; $this->hobby = $hobby; } //输出该对象的信息 public function showInfo(){ echo '<br> 名字是 ' . $this->name; foreach($this->hobby as $hobby){ echo '<br> 爱好有 ' . $hobby; } } //会做算术题, 保护的 protected function getSum($num1, $num2){ return $num1 + $num2; } //编写这个__call魔术方法, __call 魔术方法会接收到两个参数 /* @param $method_name 就是函数名 @param $parameters 就是参数,类型是array */ public function __call($method_name, $parameters){ // echo '<br> method_name = ' . $method_name; // echo '<br> $parameters <br>'; // var_dump($parameters); //判断 $this 中是否有 $method_name 函数,有就返回true,否则返回false if(method_exists($this, $method_name)){ return $this->$method_name($parameters[0], $parameters[1]); }else{ return '没有你要调用的函数'; } } } $monk = new Monk('济公', array('no1'=>'腾云驾雾', 'no2'=>'喝酒')); $monk->showInfo(); //当我们直接调用 protected 方法时,就会触发 __call 魔术方法 echo '<br> 结果是' . $monk->getSum(100, 200);
Das obige ist der detaillierte Inhalt vonZu welcher Kategorie gehört die __call-Funktion von PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!