ホームページ  >  記事  >  バックエンド開発  >  php オブジェクト指向 OOP—__call は呼び出しエラーを処理します

php オブジェクト指向 OOP—__call は呼び出しエラーを処理します

WBOY
WBOYオリジナル
2016-08-08 09:23:06918ブラウズ

プログラム開発において、オブジェクトを使用してオブジェクトの内部メソッドを呼び出すときに、呼び出されたメソッドが存在しない場合、プログラムはエラーとなり、プログラムは終了して実行を続行できません。したがって、プログラムがオブジェクト内に存在しないメソッドを呼び出す場合、呼び出されたメソッドと使用されたパラメータが存在しないことを示すプロンプトが表示されますが、この時点ではプログラムは実行を続行することができます。存在しないメソッドを呼び出すと自動的に呼び出されます。 メソッド「__call()」。

//これはテストクラスであり、属性やメソッドはありません
class Test
{
}
//Testクラスのオブジェクトを生成します
$test = new Test();
/ /オブジェクトに存在しないメソッドを呼び出す
$test->demo("one", "two", "three");
//ここではプログラムは実行されません
echo "これはテストです< ;br>";
?>

上記の例では次のエラーが発生し、通常、プログラムは実行を続行できません;

致命的 エラー: 未定義メソッド Test::demo() への呼び出し

次に、「__call()」メソッドを追加します。このメソッドには 2 つのパラメータがあります。存在する場合は、__call()メソッドを自動的に呼び出すときに、存在しないメソッドのメソッド名を最初のパラメータに渡します2番目のパラメータは、このメソッドの複数のパラメータを配列の形式で渡します

//これはテストクラスであり、属性やメソッドはありません
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 )) は存在しません。
これはテストです

「兄弟、共有してくれてありがとう。

上記は、呼び出しエラーを処理する PHP オブジェクト指向 OOP-__call を内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

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