PHP의 __call() 함수는 마법 함수입니다. 소위 PHP 마법 함수는 단순히 PHP에 특정 이름이 있음을 의미합니다. 모두 두 개의 밑줄로 시작하며 PHP 인터프리터는 특정 A 메서드를 실행하여 자동으로 찾습니다. 그리고 기회가 생기면 달려가세요.
접근할 수 없는 멤버 메서드를 호출하면 __call 매직 메서드가 호출됩니다.
접근할 수 없는 멤버 메서드는 (1. 멤버 메서드가 존재하지 않음, 2. 멤버 메서드가 보호되거나 비공개임)을 의미합니다. (추천 학습: PHP 비디오 튜토리얼)
접근할 수 없는 멤버 메소드(private, protected)를 클래스 외부에서 직접 호출할 수 있기를 바랍니다.
사례 설명
<?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);
위 내용은 PHP의 __call 함수는 어떤 카테고리에 속합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!