PHP Conference Japan 2024

SplSubject::attach

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

SplSubject::attach附加一個 SplObserver

說明

public SplSubject::attach(SplObserver $observer): void

附加一個 SplObserver 以便它可以收到更新通知。

警告

此函式目前沒有說明文件;僅提供其參數列表。

參數

observer

要附加的 SplObserver

回傳值

不回傳任何值。

新增註解

使用者貢獻的註解 2 則註解

2
workspace dot development at yahoo dot com
13 年前
我認為觀察者模式總是實作為「靜態」以便從任何範圍調用,例如
<?php
class Observer {
//在此附加呼叫者的範圍
private static $stackTrace = array( );
public static function
wasTriggeredOnce() {
//...如果不在堆疊中,則:
self::$stackTrace[] = max( debug_backtrace( ) );
}
}

class
YourFramework {

public function
launchPlatform() {

//不能讓使用者啟動應用程式兩次!
Observer::wasTriggeredOnce();
}
}
//因為是靜態的
Observer::hereIsnoNeedToInstantiateAgain();
?>
1
goran
13 年前
儲存觀察者(儲存在 attach() 中)最明顯的儲存類型是陣列。為了能夠分離附加的物件,您應該能夠在觀察者儲存區中識別它。

我建議您以這種方式附加觀察者

$this->_observers[spl_object_hash($observer)] = $observer;

這樣您以後就可以在需要時將其分離

unset($this->_observers[spl_object_hash($observer)]);
To Top