ホームページ  >  記事  >  バックエンド開発  >  PHPのインターセプターメソッドとは何ですか?

PHPのインターセプターメソッドとは何ですか?

黄舟
黄舟オリジナル
2017-08-18 13:25:264883ブラウズ

php インターセプター メソッドは次のとおりです。 1. 「__get」 メソッド、 2. 「__set()」 メソッド、 4. 「__unset($property)」 メソッド、 6. 「__call()」方法。

PHPのインターセプターメソッドとは何ですか?

PHP はどのようなインターセプターメソッドを提供していますか?

1__get($property) 未定義のプロパティにアクセスするときは、このメソッドを呼び出します>= PHP 5.3.02 __set($property, $value)未定義のプロパティの値を設定するときは、このメソッドを呼び出します >= PHP 5.3.03__isset($property)When isset( ) が未定義のプロパティで呼び出された場合、このメソッドは呼び出されます >= PHP 5.1.04 __unset($property) 未定義のプロパティで unset() が呼び出された場合、このメソッドが呼び出されます>= PHP 5.1.05__call($property, $args_array)呼び出されない メソッド定義時にメソッドを実行>= PHP 5.3.0 PHP インターセプターとは何ですか? 英語名は「interceptor」、その機能は、未定義のメソッドと属性を送信するメッセージを傍受することです。
<?php
class School
{

}

$obj = new School;
var_dump($obj->teacher);
[root@localhost php]# php538 interceptor.php 
PHP Notice:  Undefined property: School::$teacher in /usr/local/sina_mobile/apache/htdocs/php/interceptor.php on line 11NULL
前のコードに関しては、教師にアクセスするときに教師属性が存在しない場合、教師への呼び出しリクエストをインターセプトしていくつかの操作を実行できると考えます。これが php インターセプター、php インターセプターです。ここの __get メソッドは、未定義の属性にアクセスするときに呼び出されます。
詳細については、http://php.net/manual/zh/ language.oop5.magic.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 中国語 Web サイト

をご覧ください。 !

以上がPHPのインターセプターメソッドとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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