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
12 年前
我认为观察者模式总是作为“静态”来实现的,以便从任何范围调用,例如
<?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
12 年前
观察者(存储在 attach() 中)的最明显存储类型是数组。为了能够分离已附加的对象,您应该能够在观察者存储中识别它。

我建议您以这种方式附加观察者

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

这样您就可以在以后需要时将其分离

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