ホームページ  >  記事  >  バックエンド開発  >  PHP5+標準関数ライブラリオブザーバの実装

PHP5+標準関数ライブラリオブザーバの実装

WBOY
WBOYオリジナル
2016-06-23 13:50:16925ブラウズ

PHP のオブザーバー設計パターンの実装は比較的単純ですが、PHP5+ バージョンにはすでに標準ライブラリがサポートされており、それを単純に継承して実装するだけで済みます。

Observer: 標準インターフェイス クラス ライブラリ SplSubject を実装します。 1 つの登録方法: アタッチ、1 つの登録解除方法: デタッチ。通知方法:nofity。

<?phpclass TSPLSubject implements SplSubject{	 private $observers, $value;	 public function __construct(){		$this->observers =array();	 }	 public function attach(SplObserver $observer){		$this->observers[] = $observer;	 }	 public function detach(SplObserver $observer){		if($idx = array_search($observer, $this->observers,true)) {			unset($this->observers[$idx]);		}	 }	     /**	 *	 * Notify observers one by one (main entry)	 *	 * @param none	 * @return none	 */	 public function notify(){		foreach($this->observers as $observer){			$observer->update($this);		}	 }	 public function setValue($value){		$this->value = $value;		//$this->notify();	 }	 public function getValue(){		 return $this->value;	 }}

Observer: 標準インターフェイス クラス ライブラリ SplObserver を実装します。更新方法。 E e e e
<?phpclass TSPLObserver implements SplObserver{	 public function update(SplSubject $subject){		 echo 'The new state of subject ' , nl2br("\r\n");//		 echo 'The new state of subject '.$subject->getValue();	 }}
E
<?phpclass TSPLObserver1 implements SplObserver{	 public function update(SplSubject $subject){		 echo 'The new state of subject one ' , nl2br("\r\n");//		 echo 'The new state of subject '.$subject->getValue();	 }}

テスト呼び出し (同じディレクトリ内):



& & GT; サブジェクトの新しい状態 & LT;

サブジェクトの新しい状態1 つ


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