>  기사  >  백엔드 개발  >  PHP의 __call 함수는 어떤 카테고리에 속합니까?

PHP의 __call 함수는 어떤 카테고리에 속합니까?

(*-*)浩
(*-*)浩원래의
2019-10-09 11:54:202555검색

PHP의 __call() 함수는 마법 함수입니다. 소위 PHP 마법 함수는 단순히 PHP에 특정 이름이 있음을 의미합니다. 모두 두 개의 밑줄로 시작하며 PHP 인터프리터는 특정 A 메서드를 실행하여 자동으로 찾습니다. 그리고 기회가 생기면 달려가세요.

PHP의 __call 함수는 어떤 카테고리에 속합니까?

접근할 수 없는 멤버 메서드를 호출하면 __call 매직 메서드가 호출됩니다.

접근할 수 없는 멤버 메서드는 (1. 멤버 메서드가 존재하지 않음, 2. 멤버 메서드가 보호되거나 비공개임)을 의미합니다. (추천 학습: PHP 비디오 튜토리얼)

접근할 수 없는 멤버 메소드(private, protected)를 클래스 외부에서 직접 호출할 수 있기를 바랍니다.

사례 설명

<?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);

위 내용은 PHP의 __call 함수는 어떤 카테고리에 속합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.