* @author Dennis Eichhorn * @copyright 2013 Dennis Eichhorn * @license OMS License 1.0 * @version 1.0.0 * @link http://orange-management.com */ namespace phpOMS\Pattern; /** * Mediator. * * @category Pattern * @package Framework * @author OMS Development Team * @author Dennis Eichhorn * @license OMS License 1.0 * @link http://orange-management.com * @since 1.0.0 */ interface Mediator extends \Countable { /** * Attach a listener. * * Listeners will get called if a certain event gets triggered * * @param string $event Event ID * @param \Closure $callback Function to call if the event gets triggered * @param string $listener What class is attaching this listener * * @return string UID for the listener * * @since 1.0.0 * @author Dennis Eichhorn */ public function attach(string $event, \Closure $callback = null, string $listener = null) : string; /** * Removing a listener. * * @param int $event ID of the listener * * @return bool * * @since 1.0.0 * @author Dennis Eichhorn */ public function detach(int $event); /** * Trigger event. * * An object fires an event * * @param string $event Event ID * @param \Closure $callback Callback function of the event. This will get triggered after firering all listener callbacks. * @param string $source What class is invoking this event * * @return int * * @since 1.0.0 * @author Dennis Eichhorn */ public function trigger(string $event, \Closure $callback = null, string $source = null) : int; }