プログラム開発において、オブジェクトを使用してオブジェクトの内部メソッドを呼び出すときに、呼び出されたメソッドが存在しない場合、プログラムはエラーとなり、プログラムは終了して実行を続行できません。したがって、プログラムがオブジェクト内に存在しないメソッドを呼び出す場合、呼び出されたメソッドと使用されたパラメータが存在しないことを示すプロンプトが表示されますが、この時点ではプログラムは実行を続行することができます。存在しないメソッドを呼び出すと自動的に呼び出されます。 メソッド「__call()」。
//これはテストクラスであり、属性やメソッドはありません
class Test
{
}
//Testクラスのオブジェクトを生成します
$test = new Test();
/ /オブジェクトに存在しないメソッドを呼び出す
$test->demo("one", "two", "three");
//ここではプログラムは実行されません
echo "これはテストです< ;br>";
?>
上記の例では次のエラーが発生し、通常、プログラムは実行を続行できません;
class Test
{
//メソッドが存在しない場合に自動的に呼び出されますメソッドが呼び出されます。いいえ、1 つのパラメーターはメソッド名で、2 番目のパラメーターは配列パラメーターです
function __call($function_name, $args) {
print "呼び出した関数: $function_name(parameters: ") ;
print_r( $args);
echo ") は存在しません!
";
}
}
//Test クラスのオブジェクトを生成します
$test=new Test() ;
//呼び出しオブジェクト内に存在しないメソッド
$test->demo("one", "two", "three");
//プログラムは終了せず、ここで実行できます
echo "thisはテストです
";
? >
上記の例の出力結果は次のとおりです:
呼び出した関数:demo (パラメータ:Array([0 ] => 1 [1] => 2 [2] => 3 )) は存在しません。
これはテストです
「兄弟、共有してくれてありがとう。