blob: 7e038021be5deb82ac4480a271a9d07c902a7c82 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
<?php
//
// +------------------------------------------------------------------------+
// | phpDocumentor |
// +------------------------------------------------------------------------+
// | Publisher Copyright 2000-2003 Kellin |
// | Email passionplay@hotmail.com |
// | phpDocumentor Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
// | Web http://www.phpdoc.org |
// | Mirror http://phpdocu.sourceforge.net/ |
// | PEAR http://pear.php.net/package-info.php?pacid=137 |
// +------------------------------------------------------------------------+
// | This source file is subject to version 3.00 of the PHP License, |
// | that is available at http://www.php.net/license/3_0.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +------------------------------------------------------------------------+
//
/**
* a class for handling the publishing of data
*
* @author Kellin <passionplay@hotmail.com>
* @author Joshua Eichorn <jeichorn@phpdoc.org>
* @version $Id: Publisher.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
* @package phpDocumentor
*/
/**
* a class for handling the publishing of data
*
* @author Kellin <passionplay@hotmail.com>
* @author Joshua Eichorn <jeichorn@phpdoc.org>
* @version $Id: Publisher.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
* @package 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()}
*/
function subscribe($event, &$object)
{
$this->subscriber[$event] =& $object;
}
/**
* @param integer $event see {@link Parser.inc} PARSER_EVENT_* constants
* @param mixed $data anything the subscribed event handler is expecting
*/
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);
}
}
}
?>
|