1. 程式人生 > >訪問一個不存在的方法或靜態方法怎麼辦呢?__call()和__callSatatic()詳解

訪問一個不存在的方法或靜態方法怎麼辦呢?__call()和__callSatatic()詳解

<?php
//
class Demo{
/*
* $method是呼叫的方法名稱
* $args是該方法傳入的引數
*/
  //當呼叫一個不存在的方法時,會自動呼叫__call()
  public function __call($method, $args){
    $val = '';
    foreach ($args as $value) {
      $val .= $value.', ';
    }
    return '方法是:'.$method.'('.$val.')'.'不存在'.;
  }
  //當呼叫一個不存在的靜態方法時,會自動呼叫__callStatic()
  public static function __callStatic($method, $args){
    $val = '';
    foreach ($args as $value) {
      $val .= $value.', ';
    }
    return '靜態方法是:'.$method.'('.$val.')'.'不存在';
  }

}

echo (new Demo)->hello('php', 'python');
echo Demo::diplay('java', 'javascript');