PHP Conference China 2020

SplSubject::attach

(PHP 5 >= 5.1.0, PHP 7)

SplSubject::attachAdjuntar un SplObserver

Descripción

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

Adjunta un SplObserver de esta forma puede ser notificado cuando hayan actualizaciones.

Advertencia

Esta función no está documentada actualmente, solamente se encuentra disponible la lista de parámetros.

Parámetros

observer

El SplObserver a adjuntar.

Valores devueltos

No devuelve ningún valor.

add a note add a note

User Contributed Notes 2 notes

up
1
workspace dot development at yahoo dot com
8 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
0
goran
8 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