phpDocumentor phpDocumentor
[ class tree: phpDocumentor ] [ index: phpDocumentor ] [ all elements ]

Source for file Publisher.inc

Documentation is available at Publisher.inc

  1. <?php
  2. /**
  3.  * a class for handling the publishing of data
  4.  * 
  5.  * phpDocumentor :: automatic documentation generator
  6.  * 
  7.  * PHP versions 4 and 5
  8.  *
  9.  * Copyright (c) 2000-2006 Kellin, Joshua Eichorn
  10.  * 
  11.  * LICENSE:
  12.  * 
  13.  * This library is free software; you can redistribute it
  14.  * and/or modify it under the terms of the GNU Lesser General
  15.  * Public License as published by the Free Software Foundation;
  16.  * either version 2.1 of the License, or (at your option) any
  17.  * later version.
  18.  * 
  19.  * This library is distributed in the hope that it will be useful,
  20.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  21.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  22.  * Lesser General Public License for more details.
  23.  * 
  24.  * You should have received a copy of the GNU Lesser General Public
  25.  * License along with this library; if not, write to the Free Software
  26.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  27.  *
  28.  * @package    phpDocumentor
  29.  * @author     Kellin <[email protected]>
  30.  * @author     Joshua Eichorn <[email protected]>
  31.  * @copyright  2000-2006 Kellin, Joshua Eichorn
  32.  * @license    http://www.opensource.org/licenses/lgpl-license.php LGPL
  33.  * @version    CVS: $Id: Publisher.inc,v 1.3 2006/04/30 22:18:14 cellog Exp $
  34.  * @link       http://www.phpdoc.org
  35.  * @link       http://pear.php.net/PhpDocumentor
  36.  * @since      0.1
  37.  */
  38. /**
  39.  * a class for handling the publishing of data
  40.  *
  41.  * @author Kellin <[email protected]>
  42.  * @author Joshua Eichorn <[email protected]>
  43.  * @version    $Id: Publisher.inc,v 1.3 2006/04/30 22:18:14 cellog Exp $
  44.  * @package     phpDocumentor
  45.  */
  46. class Publisher
  47. {
  48.     /**#@+
  49.      * @var array 
  50.      */
  51.     /**
  52.      * Array of references objects that have Subscribed to this publisher
  53.      */
  54.     var $subscriber    =    array();
  55.  
  56.     var $tokens    =    array();
  57.  
  58.     var $pushEvent    =    array();
  59.     var $popEvent    =    array();
  60.     /**#@-*/
  61.  
  62.  
  63.     /**
  64.      * Adds a subscriber to the {@link $subscriber} array().
  65.      * if $event is '*', the publisher will use $object as the default event handler
  66.      * @param integer $event see {@link Parser.inc} PARSER_EVENT_* constants
  67.      * @param class $object any class that has a HandleEvent() method like {@link phpDocumentor_IntermediateParser::HandleEvent()} or {@link Classes::HandleEvent()}
  68.      */
  69.     function subscribe($event&$object)
  70.     {
  71.         $this->subscriber[$event=$object;
  72.     }
  73.  
  74.     /**
  75.      * @param integer $event see {@link Parser.inc} PARSER_EVENT_* constants
  76.      * @param mixed $data anything the subscribed event handler is expecting
  77.      */
  78.     function publishEvent($event,$data)
  79.     {
  80.         
  81.         // see if there is a specific event handler
  82.         if (!empty($this->subscriber[$event]))
  83.         {
  84.             $this->subscriber[$event]->HandleEvent($event,$data);
  85.         
  86.          else if (isset($this->subscriber['*']&& is_object($this->subscriber['*'])) // check to see if a generic handler exists
  87.         {
  88.             $this->subscriber['*']->HandleEvent($event,$data);
  89.         }
  90.     }    
  91. }
  92. ?>

Documentation generated on Tue, 24 Oct 2006 09:26:00 -0500 by phpDocumentor 1.3.1