public function unlisten($event = null, $listener = null)
    {
        // if event is null, remove all listeners
        if ($event=== null){
            $this->listeners = null;
            return;
        }
        // if listener parameter set null, all event specific listeners are removed
        if (!$listener){
            unset($this->listeners[$event]);
            return;
        }
        // get event specific listeners
        $listers_of_event = isset($this->listeners[$event]) ? $this->listeners[$event] : null;
        // remove all listeners
        if (is_array($listers_of_event)){
            while(($key=array_search($listener,$listers_of_event,true)) !== false){
                unset($listers_of_event[$key]);
                if (!empty($listers_of_event)){
                    // update listener holder, if listeners still exist
                    $this->listeners[$event] = $listers_of_event;
                }
                else{
                    // clean empty listener holder
                    unset($this->listeners[$event]);
                }
            }
        }
    }
public function unlisten($event = null, $listener = null)
    {
        // if event is null, remove all listeners
        if ($event=== null){
            $this->listeners = null;
            return;
        }
        // if listener parameter set null, all event specific listeners are removed
        if (!$listener){
            unset($this->listeners[$event]);
            return;
        }
        // get event specific listeners
        $listers_of_event = isset($this->listeners[$event]) ? $this->listeners[$event] : null;
        // remove all listeners
        if (is_array($listers_of_event)){
            while(($key=array_search($listener,$listers_of_event,true)) !== false){
                unset($listers_of_event[$key]);
                if (!empty($listers_of_event)){
                    // update listener holder, if listeners still exist
                    $this->listeners[$event] = $listers_of_event;
                }
                else{
                    // clean empty listener holder
                    unset($this->listeners[$event]);
                }
            }
        }
    }
public function unlisten ( $ event = null , $ listener = null ) { // if event is null, remove all listeners if ( $ event === null ) { $ this -> listeners = null ; return ; } // if listener parameter set null, all event specific listeners are removed if ( ! $ listener ) { unset ( $ this -> listeners [ $ event ] ) ; return ; } // get event specific listeners $ listers_of_event = isset ( $ this -> listeners [ $ event ] ) ? $ this -> listeners [ $ event ] : null ; // remove all listeners if ( is_array ( $ listers_of_event ) ) { while ( ( $ key = array_search ( $ listener , $ listers_of_event , true ) ) !== false ) { unset ( $ listers_of_event [ $ key ] ) ; if ( ! empty ( $ listers_of_event ) ) { // update listener holder, if listeners still exist $ this -> listeners [ $ event ] = $ listers_of_event ; } else { // clean empty listener holder unset ( $ this -> listeners [ $ event ] ) ; } } } }
remove a listener callback from event emitter

@param string|null $event
@param callable|null $listener
remove a listener callback from event emitter