mirror of
https://github.com/Pathduck/gallery3.git
synced 2026-07-13 10:30:12 -04:00
Rename 'kohana' to 'system' to conform to the Kohana filesystem layout. I'm comfortable with us not clearly drawing the distinction about the fact that it's Kohana.
This commit is contained in:
67
system/libraries/Event_Subject.php
Normal file
67
system/libraries/Event_Subject.php
Normal file
@@ -0,0 +1,67 @@
|
||||
<?php defined('SYSPATH') OR die('No direct access allowed.');
|
||||
/**
|
||||
* Kohana event subject. Uses the SPL observer pattern.
|
||||
*
|
||||
* $Id: Event_Subject.php 3769 2008-12-15 00:48:56Z zombor $
|
||||
*
|
||||
* @package Core
|
||||
* @author Kohana Team
|
||||
* @copyright (c) 2007-2008 Kohana Team
|
||||
* @license http://kohanaphp.com/license.html
|
||||
*/
|
||||
abstract class Event_Subject implements SplSubject {
|
||||
|
||||
// Attached subject listeners
|
||||
protected $listeners = array();
|
||||
|
||||
/**
|
||||
* Attach an observer to the object.
|
||||
*
|
||||
* @chainable
|
||||
* @param object Event_Observer
|
||||
* @return object
|
||||
*/
|
||||
public function attach(SplObserver $obj)
|
||||
{
|
||||
if ( ! ($obj instanceof Event_Observer))
|
||||
throw new Kohana_Exception('eventable.invalid_observer', get_class($obj), get_class($this));
|
||||
|
||||
// Add a new listener
|
||||
$this->listeners[spl_object_hash($obj)] = $obj;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Detach an observer from the object.
|
||||
*
|
||||
* @chainable
|
||||
* @param object Event_Observer
|
||||
* @return object
|
||||
*/
|
||||
public function detach(SplObserver $obj)
|
||||
{
|
||||
// Remove the listener
|
||||
unset($this->listeners[spl_object_hash($obj)]);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify all attached observers of a new message.
|
||||
*
|
||||
* @chainable
|
||||
* @param mixed message string, object, or array
|
||||
* @return object
|
||||
*/
|
||||
public function notify($message)
|
||||
{
|
||||
foreach ($this->listeners as $obj)
|
||||
{
|
||||
$obj->notify($message);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
} // End Event Subject
|
||||
Reference in New Issue
Block a user