__call()はマジックメソッドの一つで、実行させようとしたインスタンスのメソッドが存在しない時に呼ばれる。
以下の例では、MyClassに__call()メソッドのみが定義されている。__call()の内容は、引数の$methodと$argsを表示させるようにしている。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php class MyClass { public function __call($method, $args) { echo '$method:'; var_export($method); echo PHP_EOL; echo '$args:' . PHP_EOL; var_export($args); echo PHP_EOL; } } |
このクラスに存在しないインスタンスメソッドを、引数なし、引数1個、2個で実行した場合の実行結果。引数は配列として$argsにセットされ、引数がない場合は空の配列、引数が1個の場合は要素数1(要素番号0)の配列となる。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$instance = new MyClass(); $instance->method1(); // $method:'method1' // $args: // array ( // ) $instance->myMethod(1); // $method:'myMethod' // $args: // array ( // 0 => 1, // ) $instance->myMethod(1, "two"); // $method:'myMethod' // $args: // array ( // 0 => 1, // 1 => 'two', // ) |