PHP Conference Nagoya 2025

SplSubject::attach

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

SplSubject::attachSplObserver をアタッチする

説明

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

SplObserver にアタッチし、更新を通知できるようにします。

警告

この関数は、 現在のところ詳細な情報はありません。引数のリストのみが 記述されています。

パラメータ

observer

アタッチする SplObserver

戻り値

値を返しません。

add a note

User Contributed Notes 2 notes

up
2
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();
?>
up
1
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)]);
To Top