Events.php
3.8 KB
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<?php
namespace Yansongda\Pay;
use Symfony\Component\EventDispatcher\Event;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* @author yansongda <me@yansongda.cn>
*
* @method static Event dispatch($eventName, Event $event = null) Dispatches an event to all registered listeners
* @method static array getListeners($eventName = null) Gets the listeners of a specific event or all listeners sorted by descending priority.
* @method static int|null getListenerPriority($eventName, $listener) Gets the listener priority for a specific event.
* @method static bool hasListeners($eventName = null) Checks whether an event has any registered listeners.
* @method static addListener($eventName, $listener, $priority = 0) Adds an event listener that listens on the specified events.
* @method static removeListener($eventName, $listener) Removes an event listener from the specified events.
* @method static addSubscriber(EventSubscriberInterface $subscriber) Adds an event subscriber.
* @method static removeSubscriber(EventSubscriberInterface $subscriber)
*/
class Events
{
/**
* Start pay.
*
* @Event("Yansongda\Pay\Events\PayStarting")
*/
const PAY_STARTING = 'yansongda.pay.starting';
/**
* Before pay.
*
* @Event("Yansongda\Pay\Events\PayStarted")
*/
const PAY_STARTED = 'yansongda.pay.started';
/**
* Paying.
*
* @Event("Yansongda\Pay\Events\ApiRequesting")
*/
const API_REQUESTING = 'yansongda.pay.api.requesting';
/**
* Paid.
*
* @Event("Yansongda\Pay\Events\ApiRequested")
*/
const API_REQUESTED = 'yansongda.pay.api.requested';
/**
* Sign error.
*
* @Event("Yansongda\Pay\Events\SignFailed")
*/
const SIGN_FAILED = 'yansongda.pay.sign.failed';
/**
* Receive request.
*
* @Event("Yansongda\Pay\Events\RequestReceived")
*/
const REQUEST_RECEIVED = 'yansongda.pay.request.received';
/**
* Method called.
*
* @Event("Yansongda\Pay\Events\MethodCalled")
*/
const METHOD_CALLED = 'yansongda.pay.method.called';
/**
* dispatcher.
*
* @var EventDispatcher
*/
protected static $dispatcher;
/**
* Forward call.
*
* @author yansongda <me@yansongda.cn>
*
* @param string $method
* @param array $args
*
* @throws \Exception
*
* @return mixed
*/
public static function __callStatic($method, $args)
{
// return call_user_func_array([self::getDispatcher(), $method], $args);
}
/**
* Forward call.
*
* @author yansongda <me@yansongda.cn>
*
* @param string $method
* @param array $args
*
* @throws \Exception
*
* @return mixed
*/
public function __call($method, $args)
{
// return call_user_func_array([self::getDispatcher(), $method], $args);
}
/**
* setDispatcher.
*
* @author yansongda <me@yansongda.cn>
*
* @param EventDispatcher $dispatcher
*
* @return void
*/
public static function setDispatcher(EventDispatcher $dispatcher)
{
self::$dispatcher = $dispatcher;
}
/**
* getDispatcher.
*
* @author yansongda <me@yansongda.cn>
*
* @return EventDispatcher
*/
public static function getDispatcher(): EventDispatcher
{
if (self::$dispatcher) {
return self::$dispatcher;
}
return self::$dispatcher = self::createDispatcher();
}
/**
* createDispatcher.
*
* @author yansongda <me@yansongda.cn>
*
* @return EventDispatcher
*/
public static function createDispatcher(): EventDispatcher
{
return new EventDispatcher();
}
}