<?php /** * a class for handling the publishing of data * * phpDocumentor :: automatic documentation generator * * PHP versions 4 and 5 * * Copyright (c) 2000-2007 Kellin, Joshua Eichorn * * LICENSE: * * This library 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 2.1 of the License, or (at your option) any * later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * @category ToolsAndUtilities * @package phpDocumentor * @author Kellin <passionplay@hotmail.com> * @author Joshua Eichorn <jeichorn@phpdoc.org> * @copyright 2000-2007 Kellin, Joshua Eichorn * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @version CVS: $Id: Publisher.inc 244033 2007-10-11 03:30:34Z ashnazg $ * @link http://www.phpdoc.org * @link http://pear.php.net/PhpDocumentor * @since 0.1 * @todo CS cleanup - change package to PhpDocumentor */ /** * a class for handling the publishing of data * * @category ToolsAndUtilities * @package phpDocumentor * @author Kellin <passionplay@hotmail.com> * @author Joshua Eichorn <jeichorn@phpdoc.org> * @copyright 2000-2007 Kellin, Joshua Eichorn * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @version Release: 1.4.3 * @link http://www.phpdoc.org * @link http://pear.php.net/PhpDocumentor * @todo CS cleanup - change package to PhpDocumentor */ class Publisher { /**#@+ * @var array */ /** * Array of references objects that have Subscribed to this publisher */ var $subscriber = array(); var $tokens = array(); var $pushEvent = array(); var $popEvent = array(); /**#@-*/ /** * Adds a subscriber to the {@link $subscriber} array(). * if $event is '*', the publisher will use $object as the default event handler * * @param integer $event see {@link Parser.inc} PARSER_EVENT_* constants * @param class &$object any class that has a HandleEvent() method like * {@link phpDocumentor_IntermediateParser::HandleEvent()} * or {@link Classes::HandleEvent()} * * @return void * @todo CS Cleanup - there's no way I can get the &$object desc under 85 chars */ function subscribe($event, &$object) { $this->subscriber[$event] =& $object; } /** * Publish an event * * @param integer $event see {@link Parser.inc} PARSER_EVENT_* constants * @param mixed $data anything the subscribed event handler is expecting * * @return void */ function publishEvent($event,$data) { // see if there is a specific event handler if (!empty($this->subscriber[$event])) { $this->subscriber[$event]->HandleEvent($event, $data); } else if (isset($this->subscriber['*']) && is_object($this->subscriber['*'])) { // check to see if a generic handler exists $this->subscriber['*']->HandleEvent($event, $data); } } } ?>