<?php // $Id$ 
 
// vim: expandtab sw=4 ts=4 sts=4: 
 
/* BEGIN LICENSE BLOCK 
 
Copyright (c) 2005-2013 Frederic Minne <[email protected]> 
 
    This program is free software; you can redistribute it and/or modify 
    it under the terms of the GNU LESSER General Public License as published by 
    the Free Software Foundation; either version 3 of the License, or 
    (at your option) any later version. 
 
    This program is distributed in the hope that it will be useful, 
    but WITHOUT ANY WARRANTY; without even the implied warranty of 
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
    GNU General Public License for more details. 
 
    You should have received a copy of the GNU Lesser General Public License 
    along with this program; if not, write to the Free Software 
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  US 
 
END LICENSE BLOCK */ 
 
require_once dirname(__FILE__) . "/event/inc.event.php"; 
 
// ---------------------- Test Class -------------------- 
 
/** 
 * Sample event driven object 
 */ 
class MyEventDrivenObject extends EventDriven 
{ 
    /** 
     * sample event callback 
     */ 
    public function onHelloEventCallMe( ) 
    { 
        echo "Hello World\n"; 
    } 
 
    /** 
     * sample event callback 
     */ 
    public function onHelloEventCallMe2( ) 
    { 
        echo "Hello World 2\n"; 
    } 
 
    /** 
     * sample event callback 
     */ 
    public function onAnotherEventCallMe( ) 
    { 
        echo "another event occurs\n"; 
    } 
 
    /** 
     * main() method 
     * @static 
     */ 
    public static function main( ) 
    { 
        echo "> creating objects...\n"; 
        $registry = EventManager::getInstance(); 
        $edo = new MyEventDrivenObject(); 
        $em = new EventGenerator(); 
        echo "> done\n\n"; 
 
        echo "> registrering listeners\n"; 
        $id1 = $edo->addListener( "hello", 'onHelloEventCallMe' ); 
        $id2 = $edo->addListener( "another", 'onAnotherEventCallMe' ); 
        echo "> done\n\n"; 
 
        echo "> sending events\n"; 
        $em->sendEvent( new Event("hello") ); 
        $em->sendEvent( new Event("another") ); 
        echo "> done\n\n"; 
 
        echo "> lists\n"; 
        echo "* registry:\n"; 
        $registry->listRegisteredListeners( ); 
 
        echo "> registrering another hello listener\n"; 
        $id3 = $edo->addListener( "hello", 'onHelloEventCallMe2' ); 
        echo "> done\n\n"; 
 
        echo "> lists\n"; 
        echo "* registry:\n"; 
        $registry->listRegisteredListeners( ); 
 
        echo "> sending events\n"; 
        $em->sendEvent( new Event("hello") ); 
        $em->sendEvent( new Event("another") ); 
        echo "> done\n\n"; 
         
        echo "> sending events staticaly\n"; 
        EventManager::notify( new Event("hello") ); 
        EventManager::notify( new Event("another") ); 
        echo "> done\n\n"; 
 
        echo "> unregistrering another and second hello listener\n"; 
        $edo->removeListener( "another", $id2 ); 
        $edo->removeListener( "hello", $id3 ); 
        echo "> done\n\n"; 
 
        echo "> lists\n"; 
        echo "* registry:\n"; 
        $registry->listRegisteredListeners( ); 
 
        echo "> sending events\n"; 
        $em->sendEvent( new Event("hello") ); 
        $em->sendEvent( new Event("another") ); 
        echo "> done\n"; 
    } 
} 
 
// -------------------- Run Test --------------------- 
 
if ( ! defined( "DEBUG_MODE" ) ) define ( "DEBUG_MODE", true ); 
echo "<pre>"; 
MyEventDrivenObject::main(); 
echo "</pre>"; 
 
 |