[geeklog-devel] GL2 event model

Tom Willett tomw at pigstye.net
Wed Jul 21 18:10:55 EDT 2004


Let me get this straight.

GL2 Core would make the MySubjectObserverClass

$obs = new MySubjectObserverClass;

then the plugin would register by somehow getting the reference to the
MySubjectOvserverClass and register itself as a listener

$obs->addListner($MyPlugin);
or
$obs->addListener($MyPlugin, $events);
etc

Then when a event happened GL2 Core or a plugin could notify the plugins

$obs->notifyAll($event)

Do I have this about right?

--
Tom Willett
tomw at pigstye.net

---------- Original Message -----------
From: Tony Bibbs <tony at tonybibbs.com>
To: geeklog-devel at lists.geeklog.net
Sent: Wed, 21 Jul 2004 16:31:57 -0500
Subject: [geeklog-devel] GL2 event model


> The plugin API for GL2 that Vinny has drafted if surprisingly small

> because we are introducing an event based model. Essentially, the GL2

> and all plugins have the option to register events that others can

> listen to. To implement this I recommend an observer/observable design

> pattern similar to the example below. A few things that need

> discussion. First, the example below allows listening only at the

> object level. The alternative is the force listening at the event level

> (in otherwords, addListener would take as a second arg an array of

> events the object listens to). Any preference? General questions?:

>

> class MySubjectObserverClass {

> private $listeners = array();

> private $listernerNextID = 0;

>

> // Alternative names: register, subscribe...

> public function addListerner(&$obj)

> {

> $this->_listerners[] =& $obj;

> return $this->listernerNextID++;

> }

>

> // Alternative name: unregister, unsubscribe...

> public function removeListerner($id,'even't)

> {

> unset($this->listerners[$id]);

> }

>

> // Alternative name: broadcast...

> public function notifyAll($event)

> {

> foreach ($this->listerners as $id => $obj)

> {

> $this->listerners[$id]->notify($event, $this);

> }

> }

>

> // Alternative name: listen...

> function notify($event, &$obj)

> {

> switch (get_class($obj)) {

> case 'blah':

> ...

> }

> }

> }

>

> _______________________________________________

> geeklog-devel mailing list

> geeklog-devel at lists.geeklog.net

> http://lists.geeklog.net/listinfo/geeklog-devel

------- End of Original Message -------




More information about the geeklog-devel mailing list