ホームページ >バックエンド開発 >PHPチュートリアル >phpのマジックメソッド呼び出し

phpのマジックメソッド呼び出し

WBOY
WBOYオリジナル
2016-06-23 13:36:541085ブラウズ

__call はマジック メソッドの 1 つです。プログラムが現在のクラスで宣言されていないメソッド、または呼び出す権限を持たないメソッドを呼び出すと、

class test{  public function emptyFunc(){    $getArgs = func_get_args();    $funcName = $getArgs[0];    //$params = array_slice($getArgs, 1);    //var_dump($params);  // this is params                    return $funcName . ' function is not exists';  }  public function __call($m, $params)  {     $arr[] = $m;     $arr = array_merge($arr, $params);     return call_user_func_array(array($this, 'emptyFunc'), $arr);  }  protected function nowToTest(){    return 'this is nowToTest';  }}$testObj = new test();var_dump($testObj->nowToTest('params1','params1'));//var_dump result => string(29) "nowToTest function is not exists"

__call メソッドが呼び出されます。上記のテスト クラスと同様に、nowToTest メソッドが存在しますが、このメソッドは protected で変更されているため、インスタンスからのオブジェクトには実行権限がなく、

_call() には 2 つのパラメーターがあります。最初の $m は現在呼び出しているメソッドの名前です。ここでは「nowToTest」です。2 番目の $params は「nowToTest」メソッドを呼び出すときに渡されるパラメータです。 $params に配列として結合されます。 _ L Call_user_func_array ($ Method, $ Params) PHP メソッドの役割は $ Method メソッドを呼び出すことであり、パラメータは $ Params メソッドです。 func_get_args() の機能は、配列の形式で渡されたすべてのパラメータを取得することです。これらのパラメーターが __call で渡される場合、最初のパラメーターはメソッド名になります。したがって、返される最終結果は

"nowToTest function is not exists"















声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。