Heim >Backend-Entwicklung >PHP-Problem >Zu welcher Kategorie gehört die __call-Funktion von PHP?

Zu welcher Kategorie gehört die __call-Funktion von PHP?

(*-*)浩
(*-*)浩Original
2019-10-09 11:54:202596Durchsuche

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.

Zu welcher Kategorie gehört die __call-Funktion von PHP?

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(&#39;content-type:text/html;charset=utf-8&#39;);
    //__call魔术方法

     class Monk{
        public $name;
        protected $hobby;

        public function __construct($name, $hobby){
            $this->name = $name;
            $this->hobby = $hobby;
        }
        
        //输出该对象的信息
        public function showInfo(){
            
            echo &#39;<br> 名字是 &#39; . $this->name;
            foreach($this->hobby as $hobby){
                echo &#39;<br> 爱好有 &#39; . $hobby;
            }
        }

        //会做算术题, 保护的
        protected function getSum($num1, $num2){
            
            return $num1 + $num2;
        }

        //编写这个__call魔术方法, __call 魔术方法会接收到两个参数
        /*
            @param $method_name 就是函数名
            @param $parameters 就是参数,类型是array
        */
        public function __call($method_name, $parameters){
            
//            echo &#39;<br> method_name = &#39; . $method_name;
//            echo &#39;<br> $parameters <br>&#39;;
//            var_dump($parameters);
            
            //判断 $this 中是否有  $method_name 函数,有就返回true,否则返回false
            if(method_exists($this, $method_name)){

                return $this->$method_name($parameters[0], $parameters[1]);
            }else{
                return &#39;没有你要调用的函数&#39;;
            }
            
        }
     }

     $monk = new Monk(&#39;济公&#39;, array(&#39;no1&#39;=>&#39;腾云驾雾&#39;, &#39;no2&#39;=>&#39;喝酒&#39;));

     $monk->showInfo();

     //当我们直接调用 protected 方法时,就会触发 __call 魔术方法
     echo &#39;<br> 结果是&#39; . $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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn