I am not longer going to maintain this project. Please visit this fork to get one that is maintained:
https://github.com/nathanmac/CodeIgniter-Events
Build extendible applications with an events system.
Version 1.0.0
- Author: Eric Barnes
- Author: Dan Horrigan
Registers a Callback for a given event
- $event string
- $callback array
- Example:
Events::register('test_string', array('Class_name', 'string_return'));
Triggers an event and returns the results.
- $event string - The name of the event
- $data mixed - Any data that is to be passed to the listener
- $return_type string - Either 'array', 'json', 'serialized', or 'string'
- Example:
Events::trigger('test_string', 'test', 'string');
Checks if the event has any listeners
- $event string - The name of the event
- return bool
All Events functions are static.
You can add a listener to an event with the register() function:
Events::register('event_name_here', array('class_name_or_object_ref', 'method_name'));
The second parameter of register() is an array that is callable via call_user_func().
You trigger an Event by calling the trigger() function:
$event_return = Events::trigger('event_name_here', $data, 'string');
The 3rd parameter is the type of data you wish trigger() to return. Your options are as follows:
- 'array'
- 'json'
- 'serialized'
- 'string' (the default)
Because events need to be registered before being used it is a good idea to have a system in place to load any of these before you trigger any events.
Here is an example using a third party library to register the event.
// Example Welcome Controller class Welcome extends CI_Controller { public function __construct() { parent::__construct(); // Load Library $this->load->library('events'); // Load our class that registers an event. See class Test below. $this->load->add_package_path(APPPATH.'third_party/test/'); $this->load->library('test'); } public function index() { var_dump(Events::trigger('test_string', 'test', 'string')); } } // Example third_party/test/libaries/test.php class Test { public function __construct() { Events::register('test_string', array($this, 'string_return')); } public function string_return() { return 'I returned a string. Cakes and Pies!'; } }