略微加速

PHP官方手册 - 互联网笔记

PHP - Manual: SplSubject::attach

2024-12-22

SplSubject::attach

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

SplSubject::attachAttach an SplObserver

说明

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

Attaches an SplObserver so that it can be notified of updates.

警告

本函数还未编写文档,仅有参数列表。

参数

observer

The SplObserver to attach.

返回值

没有返回值。

add a noteadd a note

User Contributed Notes 2 notes

up
2
workspace dot development at yahoo dot com
10 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
10 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)]);

官方地址:https://www.php.net/manual/en/splsubject.attach.php

北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3