例外情報のキャプチャは、プログラミング テストにとって非常に重要です。ここでは、オブザーバー パターンを組み合わせて、例外情報を処理する方法を検討します。
オブザーバー モードについてまだ知らない場合は、ブログ ガーデンに多くの優れたブロガーが詳しく説明しています。著者は、いわゆるオブザーバー パターンには 2 つの重要なコンポーネントが必要であると感じています。それは、サブジェクト オブジェクトと複数のオブザーバーです。これを使用する場合、オブザーバーをプラグのようにテーマ オブジェクトのソケットに接続し、テーマ オブジェクトを使用して対応する機能を実行できます。
オブザーバーはプラグとして使用されるため、同じソケットに接続するには統一された口径が必要です。そのため、最初にインターフェイス Exception_Observer.php:
を定義します。 リーリー多くのオブザーバーと比較して、最初に唯一の対象オブジェクトである Observer_Exception.php:
に注目する必要があります。 リーリー静的変数 $_observers が挿入されたオブザーバーを配置するために使用され、notify() がすべてのオブザーバー オブジェクトに通知するために使用されていることが明確にわかります。
ここで注意が必要なのは、$this内の$observer->update($this);の使い方です。 こんな使い方もできます。」 ちょっとした質問:
$_observers は静的変数にできないでしょうか? この質問については後でお答えします。 オブザーバーを2つ定義し、原則としてインターフェースで定義された機能を実装します。
Email_Exception_Observer.php:
リーリーLogging_Exception_Observer.php:
リーリーすべての主要なオブジェクトとプラグインを設計した後、小さなテストを行ってみましょう:
リーリーこの例では、最初にオブザーバーをロードし、次に他の操作を実行します。上で挙げた質問に戻りますが、
$_observers は静的変数ではないでしょうか?答えはいいえだ。 $_observers が静的変数でない場合、オブザーバーをロードする動作は後続の操作に影響を与えません。 static を使用すると、すべてのインスタンス メンバーが変数を共有できます。クラスの継承も同様に機能します。興味があれば、静電気の魔法の効果を引き続き探索してください。 この例は、出力が一般的な状況と変わらないことを示していますが、違いは、対応するログがカスタマイズされたファイルの下に生成されていることです。最終的な関数は単純ですが、多くの人はより少ないコードで簡単な方法で実装することもできます。ただし、より複雑なシステムを実装する場合、オブザーバー パターンは非常に便利です。
http://www.bkjia.com/PHPjc/1048766.html