Hello @kartik,
I've used, it's an attempt to copy from Qt signals/slots mechanism, a kind of Observer pattern. Objects can emit signals. 
Every signal has an ID in the system - it's composed by sender's id + object name Every signal can be binded to the receivers, which simply is a "callable" You use a bus class to pass the signals to anybody interested in receiving them When something happens, you "send" a signal. 
Below is and example implementation
    <?php
    class SignalsHandler {
    private static $connections = array();
    private static $sender;
    public static function connect($sender, $signal, $slot) {
    if (is_object($sender)) {
            self::$connections[spl_object_hash($sender)][$signal][] = $slot;
     }
    else {
            self::$connections[md5($sender)][$signal][] = $slot;
        }
    }
Hope this works!!
Thank You!!