php fire an event
class Test {
    protected $listeners;
    public function __construct() {
        $this->listeners = array();
    }
    private function a() {
        echo 'something';
    }
    private function b() {
        echo 'something else';
    }
    public function __call($fname, $args) {
        call_user_func_array(array($this, $fname), $args);
        foreach($this->listeners as $listener) {
            $listener->notify('fname was called');
        }
    }
    public function addListener(Listener $listener) {
        $this->listeners[]= $listener;
    }
}
