SplSubject::attach
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
SplSubject::attach — SplObserver をアタッチする
戻り値
値を返しません。
+add a note
User Contributed Notes 2 notes
workspace dot development at yahoo dot com ¶
13 years ago
i think that Observer pattern is always implemented as "static" to be called from any scope, for example:
<?php
class Observer {
//attach here the caller's scope
private static $stackTrace = array( );
public static function wasTriggeredOnce() {
//...if is not in the stack, then:
self::$stackTrace[] = max( debug_backtrace( ) );
}
}
class YourFramework {
public function launchPlatform() {
//could not let user to launch application twice!
Observer::wasTriggeredOnce();
}
}
//cause is static
Observer::hereIsnoNeedToInstantiateAgain();
?>
goran ¶
13 years ago
The most obvious storage type for observers (stored in attach()) is array. In order to be able to detach attached objects, you should be able to identify it inside observer storage.
I suggest you attach observers this way:
$this->_observers[spl_object_hash($observer)] = $observer;
so you can detach it later if you need:
unset($this->_observers[spl_object_hash($observer)]);
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google