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 条注释

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();
?>
goran
13 年前
观察者(存储在 attach() 中)最明显的存储类型是数组。为了能够分离附加的对象,您应该能够在观察者存储中识别它。

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

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

因此,如果需要,您可以稍后分离它

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