added event queues.
This commit is contained in:
parent
af9f875ee3
commit
ef6076b2ce
|
@ -73,6 +73,7 @@ ## Laravel 3.2
|
||||||
- Fixed bug when using many-to-many relationships on non-default database connection.
|
- Fixed bug when using many-to-many relationships on non-default database connection.
|
||||||
- Added true reflection based IoC to container.
|
- Added true reflection based IoC to container.
|
||||||
- Added `Request::route()->controller` and `Request::route()->controller_action`.
|
- Added `Request::route()->controller` and `Request::route()->controller_action`.
|
||||||
|
- Added `Event::queue`, `Event::flusher`, and `Event::flush` methods to Event class.
|
||||||
|
|
||||||
<a name="upgrade-3.2"></a>
|
<a name="upgrade-3.2"></a>
|
||||||
## Upgrading From 3.1
|
## Upgrading From 3.1
|
||||||
|
|
|
@ -9,6 +9,20 @@ class Event {
|
||||||
*/
|
*/
|
||||||
public static $events = array();
|
public static $events = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The queued events waiting for flushing.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public static $queued = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* All of the registered queue flusher callbacks.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public static $flushers = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine if an event has any registered listeners.
|
* Determine if an event has any registered listeners.
|
||||||
*
|
*
|
||||||
|
@ -54,6 +68,31 @@ public static function override($event, $callback)
|
||||||
static::listen($event, $callback);
|
static::listen($event, $callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add an item to an event queue for processing.
|
||||||
|
*
|
||||||
|
* @param string $queue
|
||||||
|
* @param string $key
|
||||||
|
* @param mixed $data
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function queue($queue, $key, $data)
|
||||||
|
{
|
||||||
|
static::$queued[$queue][$key] = $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register a queue flusher callback.
|
||||||
|
*
|
||||||
|
* @param string $queue
|
||||||
|
* @param mixed $callback
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function flusher($queue, $callback)
|
||||||
|
{
|
||||||
|
static::$flushers[$queue][] = $callback;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear all event listeners for a given event.
|
* Clear all event listeners for a given event.
|
||||||
*
|
*
|
||||||
|
@ -99,6 +138,28 @@ public static function until($event, $parameters = array())
|
||||||
return static::fire($event, $parameters, true);
|
return static::fire($event, $parameters, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Flush an event queue, firing the flusher for each payload.
|
||||||
|
*
|
||||||
|
* @param string $queue
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function flush($queue)
|
||||||
|
{
|
||||||
|
foreach (static::$flushers[$queue] as $flusher)
|
||||||
|
{
|
||||||
|
// We will simply spin through each payload registered for the event and
|
||||||
|
// fire the flusher, passing each payloads as we go. This allows all
|
||||||
|
// the events on the queue to be processed by the flusher easily.
|
||||||
|
foreach (static::$queued[$queue] as $key => $payload)
|
||||||
|
{
|
||||||
|
array_unshift($payload, $key);
|
||||||
|
|
||||||
|
call_user_func_array($flusher, $payload);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fire an event so that all listeners are called.
|
* Fire an event so that all listeners are called.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue