ホームページ >バックエンド開発 >PHPチュートリアル >PHPのインターセプターメソッドとは何ですか?
php インターセプター メソッドは次のとおりです。 1. 「__get」 メソッド、 2. 「__set()」 メソッド、 4. 「__unset($property)」 メソッド、 6. 「__call()」方法。
PHP はどのようなインターセプターメソッドを提供していますか?
2 | __set($property, $value) | 未定義のプロパティの値を設定するときは、このメソッドを呼び出します | >= PHP 5.3.0 |
3 | __isset($property) | When isset( ) が未定義のプロパティで呼び出された場合、このメソッドは呼び出されます | >= PHP 5.1.0 |
4 | __unset($property) | 未定義のプロパティで unset() が呼び出された場合、このメソッドが呼び出されます | >= PHP 5.1.0 |
5 | __call($property, $args_array) | 呼び出されない メソッド定義時にメソッドを実行 | >= PHP 5.3.0 |
詳細については、http://php.net/manual/zh/ language.oop5.magic.php を参照してください。 はじめに | PHP インターセプターとは何ですか? | ||
まずコードの一部を見てみましょう。School クラスが定義され、オブジェクト $obj がインスタンス化され、未定義の属性 Teacher が取得されます。何が起こるでしょうか。 | php コマンドラインを使用して実行すると、$obj->Teacher 値が null 値であるため、php が通知を報告したことがわかります。 | 説明は次のとおりです。 , php コマンドラインの実行 ブラウザー ページの実行は、必ずしもまったく同じであるとは限りません。以下のスクリーンショットを見ると、Web サーバーが Apache 経由で同じスクリプトを実行すると、Apache は PHP を使用せずにブラウザーに Notice を報告し、200 を返します。ブラウザーは OK です。php と Web サーバー間の相互作用、および Web サーバーとブラウザー間の相互作用に問題があります。 |
以下のコードと結果を見てみましょう
<?php class School { function __get($var) { echo $var; echo "\r\n"; return "hello"; } public $name = "Tom"; } $obj = new School; var_dump($obj->teacher); var_dump($obj->name);
以下を実行した結果は次のとおりです。説明すると、__get メソッドには、呼び出しの未定義の属性名であるパラメーターが必要です。呼び出しの不明な属性に対する結果。 [root@localhost php]# php538 interceptor.php
teacher
string(5) "hello"
string(3) "Tom"
関連知識の詳細については、
をご覧ください。 !
以上がPHPのインターセプターメソッドとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。