1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
/** @noinspection ClassConstantCanBeUsedInspection */ |
4
|
|
|
|
5
|
|
|
declare(strict_types=1); |
6
|
|
|
|
7
|
|
|
/* |
8
|
|
|
* This file is part of the humbug/php-scoper package. |
9
|
|
|
* |
10
|
|
|
* Copyright (c) 2017 Théo FIDRY <[email protected]>, |
11
|
|
|
* Pádraic Brady <[email protected]> |
12
|
|
|
* |
13
|
|
|
* For the full copyright and license information, please view the LICENSE |
14
|
|
|
* file that was distributed with this source code. |
15
|
|
|
*/ |
16
|
|
|
|
17
|
|
|
namespace Humbug\PhpScoper\Symbol; |
18
|
|
|
|
19
|
|
|
use JetBrains\PHPStormStub\PhpStormStubsMap; |
20
|
|
|
use function array_keys; |
21
|
|
|
use function array_merge; |
22
|
|
|
|
23
|
|
|
/** |
24
|
|
|
* @private |
25
|
|
|
*/ |
26
|
|
|
final class Reflector |
27
|
|
|
{ |
28
|
|
|
private const MISSING_CLASSES = [ |
29
|
|
|
// https://github.com/JetBrains/phpstorm-stubs/commit/18a771fcdff1af5b5e2d2f815f886316447bacc9 |
30
|
|
|
'Swoole\Atomic' , |
31
|
|
|
'Swoole\Atomic\Long' , |
32
|
|
|
'Swoole\Client' , |
33
|
|
|
'Swoole\Client\Exception' , |
34
|
|
|
'Swoole\Connection\Iterator' , |
35
|
|
|
'Swoole\Coroutine' , |
36
|
|
|
'Swoole\Coroutine\Channel' , |
37
|
|
|
'Swoole\Coroutine\Client' , |
38
|
|
|
'Swoole\Coroutine\Context' , |
39
|
|
|
'Swoole\Coroutine\Curl\Exception' , |
40
|
|
|
'Swoole\Coroutine\Http2\Client' , |
41
|
|
|
'Swoole\Coroutine\Http2\Client\Exception' , |
42
|
|
|
'Swoole\Coroutine\Http\Client' , |
43
|
|
|
'Swoole\Coroutine\Http\Client\Exception' , |
44
|
|
|
'Swoole\Coroutine\Http\Server' , |
45
|
|
|
'Swoole\Coroutine\Iterator' , |
46
|
|
|
'Swoole\Coroutine\MySQL' , |
47
|
|
|
'Swoole\Coroutine\MySQL\Exception' , |
48
|
|
|
'Swoole\Coroutine\MySQL\Statement' , |
49
|
|
|
'Swoole\Coroutine\Redis' , |
50
|
|
|
'Swoole\Coroutine\Scheduler' , |
51
|
|
|
'Swoole\Coroutine\Socket' , |
52
|
|
|
'Swoole\Coroutine\Socket\Exception' , |
53
|
|
|
'Swoole\Coroutine\System' , |
54
|
|
|
'Swoole\Error' , |
55
|
|
|
'Swoole\Event' , |
56
|
|
|
'Swoole\Exception' , |
57
|
|
|
'Swoole\ExitException' , |
58
|
|
|
'Swoole\Http2\Request' , |
59
|
|
|
'Swoole\Http2\Response' , |
60
|
|
|
'Swoole\Http\Request' , |
61
|
|
|
'Swoole\Http\Response' , |
62
|
|
|
'Swoole\Http\Server' , |
63
|
|
|
'Swoole\Lock' , |
64
|
|
|
'Swoole\Process' , |
65
|
|
|
'Swoole\Process\Pool' , |
66
|
|
|
'Swoole\Redis\Server' , |
67
|
|
|
'Swoole\Runtime' , |
68
|
|
|
'Swoole\Server' , |
69
|
|
|
'Swoole\Server\Event' , |
70
|
|
|
'Swoole\Server\Packet' , |
71
|
|
|
'Swoole\Server\PipeMessage' , |
72
|
|
|
'Swoole\Server\Port' , |
73
|
|
|
'Swoole\Server\StatusInfo' , |
74
|
|
|
'Swoole\Server\Task' , |
75
|
|
|
'Swoole\Server\TaskResult' , |
76
|
|
|
'Swoole\Table' , |
77
|
|
|
'Swoole\Timer' , |
78
|
|
|
'Swoole\Timer\Iterator' , |
79
|
|
|
'Swoole\WebSocket\CloseFrame' , |
80
|
|
|
'Swoole\WebSocket\Frame' , |
81
|
|
|
'Swoole\WebSocket\Server' , |
82
|
|
|
|
83
|
|
|
// https://youtrack.jetbrains.com/issue/WI-29503 |
84
|
|
|
'MongoInsertBatch', |
85
|
|
|
'MongoDeleteBatch', |
86
|
|
|
]; |
87
|
|
|
|
88
|
|
|
private const MISSING_FUNCTIONS = [ |
89
|
|
|
// https://youtrack.jetbrains.com/issue/WI-53323 |
90
|
|
|
'tideways_xhprof_enable', |
91
|
|
|
'tideways_xhprof_disable', |
92
|
|
|
|
93
|
|
|
// https://github.com/JetBrains/phpstorm-stubs/commit/18a771fcdff1af5b5e2d2f815f886316447bacc9 |
94
|
|
|
'defer', |
95
|
|
|
'go', |
96
|
|
|
'swoole_async_dns_lookup_coro', |
97
|
|
|
'swoole_async_set', |
98
|
|
|
'swoole_clear_dns_cache', |
99
|
|
|
'swoole_clear_error', |
100
|
|
|
'swoole_client_select', |
101
|
|
|
'swoole_coroutine_create', |
102
|
|
|
'swoole_coroutine_defer', |
103
|
|
|
'swoole_coroutine_socketpair', |
104
|
|
|
'swoole_cpu_num', |
105
|
|
|
'swoole_errno', |
106
|
|
|
'swoole_error_log', |
107
|
|
|
'swoole_error_log_ex', |
108
|
|
|
'swoole_event_add', |
109
|
|
|
'swoole_event_cycle', |
110
|
|
|
'swoole_event_defer', |
111
|
|
|
'swoole_event_del', |
112
|
|
|
'swoole_event_dispatch', |
113
|
|
|
'swoole_event_exit', |
114
|
|
|
'swoole_event_isset', |
115
|
|
|
'swoole_event_set', |
116
|
|
|
'swoole_event_wait', |
117
|
|
|
'swoole_event_write', |
118
|
|
|
'swoole_get_local_ip', |
119
|
|
|
'swoole_get_local_mac', |
120
|
|
|
'swoole_get_mime_type', |
121
|
|
|
'swoole_get_object_by_handle', |
122
|
|
|
'swoole_get_objects', |
123
|
|
|
'swoole_get_vm_status', |
124
|
|
|
'swoole_hashcode', |
125
|
|
|
'swoole_ignore_error', |
126
|
|
|
'swoole_internal_call_user_shutdown_begin', |
127
|
|
|
'swoole_last_error', |
128
|
|
|
'swoole_mime_type_add', |
129
|
|
|
'swoole_mime_type_delete', |
130
|
|
|
'swoole_mime_type_exists', |
131
|
|
|
'swoole_mime_type_get', |
132
|
|
|
'swoole_mime_type_list', |
133
|
|
|
'swoole_mime_type_set', |
134
|
|
|
'swoole_select', |
135
|
|
|
'swoole_set_process_name', |
136
|
|
|
'swoole_strerror', |
137
|
|
|
'swoole_substr_json_decode', |
138
|
|
|
'swoole_substr_unserialize', |
139
|
|
|
'swoole_test_kernel_coroutine', |
140
|
|
|
'swoole_timer_after', |
141
|
|
|
'swoole_timer_clear', |
142
|
|
|
'swoole_timer_clear_all', |
143
|
|
|
'swoole_timer_exists', |
144
|
|
|
'swoole_timer_info', |
145
|
|
|
'swoole_timer_list', |
146
|
|
|
'swoole_timer_set', |
147
|
|
|
'swoole_timer_stats', |
148
|
|
|
'swoole_timer_tick', |
149
|
|
|
'swoole_version', |
150
|
|
|
|
151
|
|
|
// https://youtrack.jetbrains.com/issue/WI-29503 |
152
|
|
|
'bson_encode', |
153
|
|
|
'bson_decode', |
154
|
|
|
]; |
155
|
|
|
|
156
|
|
|
/** |
157
|
|
|
* Basically mirrors https://github.com/nikic/PHP-Parser/blob/9aebf377fcdf205b2156cb78c0bd6e7b2003f106/lib/PhpParser/Lexer.php#L430 |
158
|
|
|
*/ |
159
|
|
|
private const MISSING_CONSTANTS = [ |
160
|
|
|
'STDIN', |
161
|
|
|
'STDOUT', |
162
|
|
|
'STDERR', |
163
|
|
|
|
164
|
|
|
// https://github.com/humbug/php-scoper/issues/618 |
165
|
|
|
'true', |
166
|
|
|
'TRUE', |
167
|
|
|
'false', |
168
|
|
|
'FALSE', |
169
|
|
|
'null', |
170
|
|
|
'NULL', |
171
|
|
|
|
172
|
|
|
// Added in PHP 8.0 |
173
|
|
|
'T_NAME_QUALIFIED', |
174
|
|
|
'T_NAME_FULLY_QUALIFIED', |
175
|
|
|
'T_NAME_RELATIVE', |
176
|
|
|
'T_MATCH', |
177
|
|
|
'T_NULLSAFE_OBJECT_OPERATOR', |
178
|
|
|
'T_ATTRIBUTE', |
179
|
|
|
|
180
|
|
|
// Added in PHP 8.1 |
181
|
|
|
'T_ENUM', |
182
|
|
|
'T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG', |
183
|
|
|
'T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG', |
184
|
|
|
'T_READONLY', |
185
|
|
|
|
186
|
|
|
// https://youtrack.jetbrains.com/issue/WI-53323 |
187
|
|
|
'TIDEWAYS_XHPROF_FLAGS_MEMORY', |
188
|
|
|
'TIDEWAYS_XHPROF_FLAGS_MEMORY_MU', |
189
|
|
|
'TIDEWAYS_XHPROF_FLAGS_MEMORY_PMU', |
190
|
|
|
'TIDEWAYS_XHPROF_FLAGS_CPU', |
191
|
|
|
'TIDEWAYS_XHPROF_FLAGS_NO_BUILTINS', |
192
|
|
|
'TIDEWAYS_XHPROF_FLAGS_MEMORY_ALLOC', |
193
|
|
|
'TIDEWAYS_XHPROF_FLAGS_MEMORY_ALLOC_AS_MU', |
194
|
|
|
|
195
|
|
|
// https://github.com/JetBrains/phpstorm-stubs/commit/18a771fcdff1af5b5e2d2f815f886316447bacc9 |
196
|
|
|
'SOCKET_ECANCELED', |
197
|
|
|
'SWOOLE_ASYNC', |
198
|
|
|
'SWOOLE_BASE', |
199
|
|
|
'SWOOLE_CHANNEL_CANCELED', |
200
|
|
|
'SWOOLE_CHANNEL_CLOSED', |
201
|
|
|
'SWOOLE_CHANNEL_OK', |
202
|
|
|
'SWOOLE_CHANNEL_TIMEOUT', |
203
|
|
|
'SWOOLE_CORO_END', |
204
|
|
|
'SWOOLE_CORO_INIT', |
205
|
|
|
'SWOOLE_CORO_MAX_NUM_LIMIT', |
206
|
|
|
'SWOOLE_CORO_RUNNING', |
207
|
|
|
'SWOOLE_CORO_WAITING', |
208
|
|
|
'SWOOLE_DEBUG', |
209
|
|
|
'SWOOLE_DEFAULT_MAX_CORO_NUM', |
210
|
|
|
'SWOOLE_DISPATCH_CO_CONN_LB', |
211
|
|
|
'SWOOLE_DISPATCH_CO_REQ_LB', |
212
|
|
|
'SWOOLE_DISPATCH_FDMOD', |
213
|
|
|
'SWOOLE_DISPATCH_IDLE_WORKER', |
214
|
|
|
'SWOOLE_DISPATCH_IPMOD', |
215
|
|
|
'SWOOLE_DISPATCH_RESULT_CLOSE_CONNECTION', |
216
|
|
|
'SWOOLE_DISPATCH_RESULT_DISCARD_PACKET', |
217
|
|
|
'SWOOLE_DISPATCH_RESULT_USERFUNC_FALLBACK', |
218
|
|
|
'SWOOLE_DISPATCH_ROUND', |
219
|
|
|
'SWOOLE_DISPATCH_STREAM', |
220
|
|
|
'SWOOLE_DISPATCH_UIDMOD', |
221
|
|
|
'SWOOLE_DISPATCH_USERFUNC', |
222
|
|
|
'SWOOLE_DTLS_CLIENT_METHOD', |
223
|
|
|
'SWOOLE_DTLS_SERVER_METHOD', |
224
|
|
|
'SWOOLE_ERROR_AIO_BAD_REQUEST', |
225
|
|
|
'SWOOLE_ERROR_AIO_CANCELED', |
226
|
|
|
'SWOOLE_ERROR_AIO_TIMEOUT', |
227
|
|
|
'SWOOLE_ERROR_BAD_IPV6_ADDRESS', |
228
|
|
|
'SWOOLE_ERROR_CLIENT_NO_CONNECTION', |
229
|
|
|
'SWOOLE_ERROR_CO_BLOCK_OBJECT_LOCKED', |
230
|
|
|
'SWOOLE_ERROR_CO_BLOCK_OBJECT_WAITING', |
231
|
|
|
'SWOOLE_ERROR_CO_CANCELED', |
232
|
|
|
'SWOOLE_ERROR_CO_CANNOT_CANCEL', |
233
|
|
|
'SWOOLE_ERROR_CO_DISABLED_MULTI_THREAD', |
234
|
|
|
'SWOOLE_ERROR_CO_GETCONTEXT_FAILED', |
235
|
|
|
'SWOOLE_ERROR_CO_HAS_BEEN_BOUND', |
236
|
|
|
'SWOOLE_ERROR_CO_HAS_BEEN_DISCARDED', |
237
|
|
|
'SWOOLE_ERROR_CO_IOCPINIT_FAILED', |
238
|
|
|
'SWOOLE_ERROR_CO_MAKECONTEXT_FAILED', |
239
|
|
|
'SWOOLE_ERROR_CO_MUTEX_DOUBLE_UNLOCK', |
240
|
|
|
'SWOOLE_ERROR_CO_NOT_EXISTS', |
241
|
|
|
'SWOOLE_ERROR_CO_OUT_OF_COROUTINE', |
242
|
|
|
'SWOOLE_ERROR_CO_PROTECT_STACK_FAILED', |
243
|
|
|
'SWOOLE_ERROR_CO_STD_THREAD_LINK_ERROR', |
244
|
|
|
'SWOOLE_ERROR_CO_SWAPCONTEXT_FAILED', |
245
|
|
|
'SWOOLE_ERROR_CO_TIMEDOUT', |
246
|
|
|
'SWOOLE_ERROR_CO_YIELD_FAILED', |
247
|
|
|
'SWOOLE_ERROR_DATA_LENGTH_TOO_LARGE', |
248
|
|
|
'SWOOLE_ERROR_DNSLOOKUP_DUPLICATE_REQUEST', |
249
|
|
|
'SWOOLE_ERROR_DNSLOOKUP_NO_SERVER', |
250
|
|
|
'SWOOLE_ERROR_DNSLOOKUP_RESOLVE_FAILED', |
251
|
|
|
'SWOOLE_ERROR_DNSLOOKUP_RESOLVE_TIMEOUT', |
252
|
|
|
'SWOOLE_ERROR_DNSLOOKUP_UNSUPPORTED', |
253
|
|
|
'SWOOLE_ERROR_EVENT_SOCKET_REMOVED', |
254
|
|
|
'SWOOLE_ERROR_FILE_EMPTY', |
255
|
|
|
'SWOOLE_ERROR_FILE_NOT_EXIST', |
256
|
|
|
'SWOOLE_ERROR_FILE_TOO_LARGE', |
257
|
|
|
'SWOOLE_ERROR_HTTP2_STREAM_ID_TOO_BIG', |
258
|
|
|
'SWOOLE_ERROR_HTTP2_STREAM_IGNORE', |
259
|
|
|
'SWOOLE_ERROR_HTTP2_STREAM_NOT_FOUND', |
260
|
|
|
'SWOOLE_ERROR_HTTP2_STREAM_NO_HEADER', |
261
|
|
|
'SWOOLE_ERROR_HTTP_INVALID_PROTOCOL', |
262
|
|
|
'SWOOLE_ERROR_HTTP_PROXY_BAD_RESPONSE', |
263
|
|
|
'SWOOLE_ERROR_HTTP_PROXY_HANDSHAKE_ERROR', |
264
|
|
|
'SWOOLE_ERROR_HTTP_PROXY_HANDSHAKE_FAILED', |
265
|
|
|
'SWOOLE_ERROR_INVALID_PARAMS', |
266
|
|
|
'SWOOLE_ERROR_MALLOC_FAIL', |
267
|
|
|
'SWOOLE_ERROR_NAME_TOO_LONG', |
268
|
|
|
'SWOOLE_ERROR_OPERATION_NOT_SUPPORT', |
269
|
|
|
'SWOOLE_ERROR_OUTPUT_BUFFER_OVERFLOW', |
270
|
|
|
'SWOOLE_ERROR_OUTPUT_SEND_YIELD', |
271
|
|
|
'SWOOLE_ERROR_PACKAGE_LENGTH_NOT_FOUND', |
272
|
|
|
'SWOOLE_ERROR_PACKAGE_LENGTH_TOO_LARGE', |
273
|
|
|
'SWOOLE_ERROR_PACKAGE_MALFORMED_DATA', |
274
|
|
|
'SWOOLE_ERROR_PHP_FATAL_ERROR', |
275
|
|
|
'SWOOLE_ERROR_PROTOCOL_ERROR', |
276
|
|
|
'SWOOLE_ERROR_QUEUE_FULL', |
277
|
|
|
'SWOOLE_ERROR_SERVER_CONNECT_FAIL', |
278
|
|
|
'SWOOLE_ERROR_SERVER_INVALID_COMMAND', |
279
|
|
|
'SWOOLE_ERROR_SERVER_INVALID_LISTEN_PORT', |
280
|
|
|
'SWOOLE_ERROR_SERVER_INVALID_REQUEST', |
281
|
|
|
'SWOOLE_ERROR_SERVER_MUST_CREATED_BEFORE_CLIENT', |
282
|
|
|
'SWOOLE_ERROR_SERVER_NO_IDLE_WORKER', |
283
|
|
|
'SWOOLE_ERROR_SERVER_ONLY_START_ONE', |
284
|
|
|
'SWOOLE_ERROR_SERVER_PIPE_BUFFER_FULL', |
285
|
|
|
'SWOOLE_ERROR_SERVER_SEND_IN_MASTER', |
286
|
|
|
'SWOOLE_ERROR_SERVER_TOO_MANY_LISTEN_PORT', |
287
|
|
|
'SWOOLE_ERROR_SERVER_TOO_MANY_SOCKET', |
288
|
|
|
'SWOOLE_ERROR_SERVER_WORKER_ABNORMAL_PIPE_DATA', |
289
|
|
|
'SWOOLE_ERROR_SERVER_WORKER_EXIT_TIMEOUT', |
290
|
|
|
'SWOOLE_ERROR_SERVER_WORKER_TERMINATED', |
291
|
|
|
'SWOOLE_ERROR_SERVER_WORKER_UNPROCESSED_DATA', |
292
|
|
|
'SWOOLE_ERROR_SESSION_CLOSED', |
293
|
|
|
'SWOOLE_ERROR_SESSION_CLOSED_BY_CLIENT', |
294
|
|
|
'SWOOLE_ERROR_SESSION_CLOSED_BY_SERVER', |
295
|
|
|
'SWOOLE_ERROR_SESSION_CLOSING', |
296
|
|
|
'SWOOLE_ERROR_SESSION_DISCARD_DATA', |
297
|
|
|
'SWOOLE_ERROR_SESSION_DISCARD_TIMEOUT_DATA', |
298
|
|
|
'SWOOLE_ERROR_SESSION_INVALID_ID', |
299
|
|
|
'SWOOLE_ERROR_SESSION_NOT_EXIST', |
300
|
|
|
'SWOOLE_ERROR_SOCKET_CLOSED', |
301
|
|
|
'SWOOLE_ERROR_SOCKET_POLL_TIMEOUT', |
302
|
|
|
'SWOOLE_ERROR_SOCKS5_AUTH_FAILED', |
303
|
|
|
'SWOOLE_ERROR_SOCKS5_HANDSHAKE_FAILED', |
304
|
|
|
'SWOOLE_ERROR_SOCKS5_SERVER_ERROR', |
305
|
|
|
'SWOOLE_ERROR_SOCKS5_UNSUPPORT_METHOD', |
306
|
|
|
'SWOOLE_ERROR_SOCKS5_UNSUPPORT_VERSION', |
307
|
|
|
'SWOOLE_ERROR_SSL_BAD_CLIENT', |
308
|
|
|
'SWOOLE_ERROR_SSL_BAD_PROTOCOL', |
309
|
|
|
'SWOOLE_ERROR_SSL_CANNOT_USE_SENFILE', |
310
|
|
|
'SWOOLE_ERROR_SSL_EMPTY_PEER_CERTIFICATE', |
311
|
|
|
'SWOOLE_ERROR_SSL_HANDSHAKE_FAILED', |
312
|
|
|
'SWOOLE_ERROR_SSL_NOT_READY', |
313
|
|
|
'SWOOLE_ERROR_SSL_RESET', |
314
|
|
|
'SWOOLE_ERROR_SSL_VERIFY_FAILED', |
315
|
|
|
'SWOOLE_ERROR_SYSTEM_CALL_FAIL', |
316
|
|
|
'SWOOLE_ERROR_TASK_DISPATCH_FAIL', |
317
|
|
|
'SWOOLE_ERROR_TASK_PACKAGE_TOO_BIG', |
318
|
|
|
'SWOOLE_ERROR_TASK_TIMEOUT', |
319
|
|
|
'SWOOLE_ERROR_UNREGISTERED_SIGNAL', |
320
|
|
|
'SWOOLE_ERROR_WEBSOCKET_BAD_CLIENT', |
321
|
|
|
'SWOOLE_ERROR_WEBSOCKET_BAD_OPCODE', |
322
|
|
|
'SWOOLE_ERROR_WEBSOCKET_HANDSHAKE_FAILED', |
323
|
|
|
'SWOOLE_ERROR_WEBSOCKET_INCOMPLETE_PACKET', |
324
|
|
|
'SWOOLE_ERROR_WEBSOCKET_PACK_FAILED', |
325
|
|
|
'SWOOLE_ERROR_WEBSOCKET_UNCONNECTED', |
326
|
|
|
'SWOOLE_ERROR_WEBSOCKET_UNPACK_FAILED', |
327
|
|
|
'SWOOLE_ERROR_WRONG_OPERATION', |
328
|
|
|
'SWOOLE_EVENT_READ', |
329
|
|
|
'SWOOLE_EVENT_WRITE', |
330
|
|
|
'SWOOLE_EXIT_IN_COROUTINE', |
331
|
|
|
'SWOOLE_EXIT_IN_SERVER', |
332
|
|
|
'SWOOLE_EXTRA_VERSION', |
333
|
|
|
'SWOOLE_FILELOCK', |
334
|
|
|
'SWOOLE_HAVE_BROTLI', |
335
|
|
|
'SWOOLE_HAVE_COMPRESSION', |
336
|
|
|
'SWOOLE_HAVE_ZLIB', |
337
|
|
|
'SWOOLE_HOOK_ALL', |
338
|
|
|
'SWOOLE_HOOK_BLOCKING_FUNCTION', |
339
|
|
|
'SWOOLE_HOOK_CURL', |
340
|
|
|
'SWOOLE_HOOK_FILE', |
341
|
|
|
'SWOOLE_HOOK_NATIVE_CURL', |
342
|
|
|
'SWOOLE_HOOK_PROC', |
343
|
|
|
'SWOOLE_HOOK_SLEEP', |
344
|
|
|
'SWOOLE_HOOK_SOCKETS', |
345
|
|
|
'SWOOLE_HOOK_SSL', |
346
|
|
|
'SWOOLE_HOOK_STDIO', |
347
|
|
|
'SWOOLE_HOOK_STREAM_FUNCTION', |
348
|
|
|
'SWOOLE_HOOK_STREAM_SELECT', |
349
|
|
|
'SWOOLE_HOOK_TCP', |
350
|
|
|
'SWOOLE_HOOK_TLS', |
351
|
|
|
'SWOOLE_HOOK_UDG', |
352
|
|
|
'SWOOLE_HOOK_UDP', |
353
|
|
|
'SWOOLE_HOOK_UNIX', |
354
|
|
|
'SWOOLE_HTTP2_ERROR_CANCEL', |
355
|
|
|
'SWOOLE_HTTP2_ERROR_COMPRESSION_ERROR', |
356
|
|
|
'SWOOLE_HTTP2_ERROR_CONNECT_ERROR', |
357
|
|
|
'SWOOLE_HTTP2_ERROR_ENHANCE_YOUR_CALM', |
358
|
|
|
'SWOOLE_HTTP2_ERROR_FLOW_CONTROL_ERROR', |
359
|
|
|
'SWOOLE_HTTP2_ERROR_FRAME_SIZE_ERROR', |
360
|
|
|
'SWOOLE_HTTP2_ERROR_INADEQUATE_SECURITY', |
361
|
|
|
'SWOOLE_HTTP2_ERROR_INTERNAL_ERROR', |
362
|
|
|
'SWOOLE_HTTP2_ERROR_NO_ERROR', |
363
|
|
|
'SWOOLE_HTTP2_ERROR_PROTOCOL_ERROR', |
364
|
|
|
'SWOOLE_HTTP2_ERROR_REFUSED_STREAM', |
365
|
|
|
'SWOOLE_HTTP2_ERROR_SETTINGS_TIMEOUT', |
366
|
|
|
'SWOOLE_HTTP2_ERROR_STREAM_CLOSED', |
367
|
|
|
'SWOOLE_HTTP2_TYPE_CONTINUATION', |
368
|
|
|
'SWOOLE_HTTP2_TYPE_DATA', |
369
|
|
|
'SWOOLE_HTTP2_TYPE_GOAWAY', |
370
|
|
|
'SWOOLE_HTTP2_TYPE_HEADERS', |
371
|
|
|
'SWOOLE_HTTP2_TYPE_PING', |
372
|
|
|
'SWOOLE_HTTP2_TYPE_PRIORITY', |
373
|
|
|
'SWOOLE_HTTP2_TYPE_PUSH_PROMISE', |
374
|
|
|
'SWOOLE_HTTP2_TYPE_RST_STREAM', |
375
|
|
|
'SWOOLE_HTTP2_TYPE_SETTINGS', |
376
|
|
|
'SWOOLE_HTTP2_TYPE_WINDOW_UPDATE', |
377
|
|
|
'SWOOLE_HTTP_CLIENT_ESTATUS_CONNECT_FAILED', |
378
|
|
|
'SWOOLE_HTTP_CLIENT_ESTATUS_REQUEST_TIMEOUT', |
379
|
|
|
'SWOOLE_HTTP_CLIENT_ESTATUS_SEND_FAILED', |
380
|
|
|
'SWOOLE_HTTP_CLIENT_ESTATUS_SERVER_RESET', |
381
|
|
|
'SWOOLE_IOV_MAX', |
382
|
|
|
'SWOOLE_IPC_MSGQUEUE', |
383
|
|
|
'SWOOLE_IPC_NONE', |
384
|
|
|
'SWOOLE_IPC_PREEMPTIVE', |
385
|
|
|
'SWOOLE_IPC_SOCKET', |
386
|
|
|
'SWOOLE_IPC_UNIXSOCK', |
387
|
|
|
'SWOOLE_IPC_UNSOCK', |
388
|
|
|
'SWOOLE_KEEP', |
389
|
|
|
'SWOOLE_LOG_DEBUG', |
390
|
|
|
'SWOOLE_LOG_ERROR', |
391
|
|
|
'SWOOLE_LOG_INFO', |
392
|
|
|
'SWOOLE_LOG_NONE', |
393
|
|
|
'SWOOLE_LOG_NOTICE', |
394
|
|
|
'SWOOLE_LOG_ROTATION_DAILY', |
395
|
|
|
'SWOOLE_LOG_ROTATION_EVERY_MINUTE', |
396
|
|
|
'SWOOLE_LOG_ROTATION_HOURLY', |
397
|
|
|
'SWOOLE_LOG_ROTATION_MONTHLY', |
398
|
|
|
'SWOOLE_LOG_ROTATION_SINGLE', |
399
|
|
|
'SWOOLE_LOG_TRACE', |
400
|
|
|
'SWOOLE_LOG_WARNING', |
401
|
|
|
'SWOOLE_MAJOR_VERSION', |
402
|
|
|
'SWOOLE_MINOR_VERSION', |
403
|
|
|
'SWOOLE_MUTEX', |
404
|
|
|
'SWOOLE_MYSQLND_CR_CANT_FIND_CHARSET', |
405
|
|
|
'SWOOLE_MYSQLND_CR_COMMANDS_OUT_OF_SYNC', |
406
|
|
|
'SWOOLE_MYSQLND_CR_CONNECTION_ERROR', |
407
|
|
|
'SWOOLE_MYSQLND_CR_INVALID_BUFFER_USE', |
408
|
|
|
'SWOOLE_MYSQLND_CR_INVALID_PARAMETER_NO', |
409
|
|
|
'SWOOLE_MYSQLND_CR_MALFORMED_PACKET', |
410
|
|
|
'SWOOLE_MYSQLND_CR_NOT_IMPLEMENTED', |
411
|
|
|
'SWOOLE_MYSQLND_CR_NO_PREPARE_STMT', |
412
|
|
|
'SWOOLE_MYSQLND_CR_OUT_OF_MEMORY', |
413
|
|
|
'SWOOLE_MYSQLND_CR_PARAMS_NOT_BOUND', |
414
|
|
|
'SWOOLE_MYSQLND_CR_SERVER_GONE_ERROR', |
415
|
|
|
'SWOOLE_MYSQLND_CR_SERVER_LOST', |
416
|
|
|
'SWOOLE_MYSQLND_CR_UNKNOWN_ERROR', |
417
|
|
|
'SWOOLE_PROCESS', |
418
|
|
|
'SWOOLE_REDIS_ERR_ALLOC', |
419
|
|
|
'SWOOLE_REDIS_ERR_CLOSED', |
420
|
|
|
'SWOOLE_REDIS_ERR_EOF', |
421
|
|
|
'SWOOLE_REDIS_ERR_IO', |
422
|
|
|
'SWOOLE_REDIS_ERR_NOAUTH', |
423
|
|
|
'SWOOLE_REDIS_ERR_OOM', |
424
|
|
|
'SWOOLE_REDIS_ERR_OTHER', |
425
|
|
|
'SWOOLE_REDIS_ERR_PROTOCOL', |
426
|
|
|
'SWOOLE_REDIS_MODE_MULTI', |
427
|
|
|
'SWOOLE_REDIS_MODE_PIPELINE', |
428
|
|
|
'SWOOLE_REDIS_TYPE_HASH', |
429
|
|
|
'SWOOLE_REDIS_TYPE_LIST', |
430
|
|
|
'SWOOLE_REDIS_TYPE_NOT_FOUND', |
431
|
|
|
'SWOOLE_REDIS_TYPE_SET', |
432
|
|
|
'SWOOLE_REDIS_TYPE_STRING', |
433
|
|
|
'SWOOLE_REDIS_TYPE_ZSET', |
434
|
|
|
'SWOOLE_RELEASE_VERSION', |
435
|
|
|
'SWOOLE_RWLOCK', |
436
|
|
|
'SWOOLE_SEM', |
437
|
|
|
'SWOOLE_SERVER_COMMAND_EVENT_WORKER', |
438
|
|
|
'SWOOLE_SERVER_COMMAND_MANAGER', |
439
|
|
|
'SWOOLE_SERVER_COMMAND_MASTER', |
440
|
|
|
'SWOOLE_SERVER_COMMAND_REACTOR_THREAD', |
441
|
|
|
'SWOOLE_SERVER_COMMAND_TASK_WORKER', |
442
|
|
|
'SWOOLE_SERVER_COMMAND_WORKER', |
443
|
|
|
'SWOOLE_SOCK_ASYNC', |
444
|
|
|
'SWOOLE_SOCK_SYNC', |
445
|
|
|
'SWOOLE_SOCK_TCP', |
446
|
|
|
'SWOOLE_SOCK_TCP6', |
447
|
|
|
'SWOOLE_SOCK_UDP', |
448
|
|
|
'SWOOLE_SOCK_UDP6', |
449
|
|
|
'SWOOLE_SOCK_UNIX_DGRAM', |
450
|
|
|
'SWOOLE_SOCK_UNIX_STREAM', |
451
|
|
|
'SWOOLE_SPINLOCK', |
452
|
|
|
'SWOOLE_SSL', |
453
|
|
|
'SWOOLE_SSL_DTLS', |
454
|
|
|
'SWOOLE_SSL_SSLv2', |
455
|
|
|
'SWOOLE_SSL_TLSv1', |
456
|
|
|
'SWOOLE_SSL_TLSv1_1', |
457
|
|
|
'SWOOLE_SSL_TLSv1_2', |
458
|
|
|
'SWOOLE_SSL_TLSv1_3', |
459
|
|
|
'SWOOLE_SSLv23_CLIENT_METHOD', |
460
|
|
|
'SWOOLE_SSLv23_METHOD', |
461
|
|
|
'SWOOLE_SSLv23_SERVER_METHOD', |
462
|
|
|
'SWOOLE_SSLv3_CLIENT_METHOD', |
463
|
|
|
'SWOOLE_SSLv3_METHOD', |
464
|
|
|
'SWOOLE_SSLv3_SERVER_METHOD', |
465
|
|
|
'SWOOLE_STRERROR_DNS', |
466
|
|
|
'SWOOLE_STRERROR_GAI', |
467
|
|
|
'SWOOLE_STRERROR_SWOOLE', |
468
|
|
|
'SWOOLE_STRERROR_SYSTEM', |
469
|
|
|
'SWOOLE_SYNC', |
470
|
|
|
'SWOOLE_TASK_CALLBACK', |
471
|
|
|
'SWOOLE_TASK_COROUTINE', |
472
|
|
|
'SWOOLE_TASK_NONBLOCK', |
473
|
|
|
'SWOOLE_TASK_NOREPLY', |
474
|
|
|
'SWOOLE_TASK_PEEK', |
475
|
|
|
'SWOOLE_TASK_SERIALIZE', |
476
|
|
|
'SWOOLE_TASK_TMPFILE', |
477
|
|
|
'SWOOLE_TASK_WAITALL', |
478
|
|
|
'SWOOLE_TCP', |
479
|
|
|
'SWOOLE_TCP6', |
480
|
|
|
'SWOOLE_TIMER_MAX_MS', |
481
|
|
|
'SWOOLE_TIMER_MAX_SEC', |
482
|
|
|
'SWOOLE_TIMER_MIN_MS', |
483
|
|
|
'SWOOLE_TIMER_MIN_SEC', |
484
|
|
|
'SWOOLE_TLS_CLIENT_METHOD', |
485
|
|
|
'SWOOLE_TLS_METHOD', |
486
|
|
|
'SWOOLE_TLS_SERVER_METHOD', |
487
|
|
|
'SWOOLE_TLSv1_1_CLIENT_METHOD', |
488
|
|
|
'SWOOLE_TLSv1_1_METHOD', |
489
|
|
|
'SWOOLE_TLSv1_1_SERVER_METHOD', |
490
|
|
|
'SWOOLE_TLSv1_2_CLIENT_METHOD', |
491
|
|
|
'SWOOLE_TLSv1_2_METHOD', |
492
|
|
|
'SWOOLE_TLSv1_2_SERVER_METHOD', |
493
|
|
|
'SWOOLE_TLSv1_CLIENT_METHOD', |
494
|
|
|
'SWOOLE_TLSv1_METHOD', |
495
|
|
|
'SWOOLE_TLSv1_SERVER_METHOD', |
496
|
|
|
'SWOOLE_TRACE_AIO', |
497
|
|
|
'SWOOLE_TRACE_ALL', |
498
|
|
|
'SWOOLE_TRACE_BUFFER', |
499
|
|
|
'SWOOLE_TRACE_CARES', |
500
|
|
|
'SWOOLE_TRACE_CHANNEL', |
501
|
|
|
'SWOOLE_TRACE_CLIENT', |
502
|
|
|
'SWOOLE_TRACE_CLOSE', |
503
|
|
|
'SWOOLE_TRACE_CONN', |
504
|
|
|
'SWOOLE_TRACE_CONTEXT', |
505
|
|
|
'SWOOLE_TRACE_COROUTINE', |
506
|
|
|
'SWOOLE_TRACE_CO_CURL', |
507
|
|
|
'SWOOLE_TRACE_CO_HTTP_SERVER', |
508
|
|
|
'SWOOLE_TRACE_EOF_PROTOCOL', |
509
|
|
|
'SWOOLE_TRACE_EVENT', |
510
|
|
|
'SWOOLE_TRACE_HTTP', |
511
|
|
|
'SWOOLE_TRACE_HTTP2', |
512
|
|
|
'SWOOLE_TRACE_HTTP_CLIENT', |
513
|
|
|
'SWOOLE_TRACE_LENGTH_PROTOCOL', |
514
|
|
|
'SWOOLE_TRACE_MEMORY', |
515
|
|
|
'SWOOLE_TRACE_MYSQL_CLIENT', |
516
|
|
|
'SWOOLE_TRACE_NORMAL', |
517
|
|
|
'SWOOLE_TRACE_PHP', |
518
|
|
|
'SWOOLE_TRACE_REACTOR', |
519
|
|
|
'SWOOLE_TRACE_REDIS_CLIENT', |
520
|
|
|
'SWOOLE_TRACE_SERVER', |
521
|
|
|
'SWOOLE_TRACE_SOCKET', |
522
|
|
|
'SWOOLE_TRACE_SSL', |
523
|
|
|
'SWOOLE_TRACE_TABLE', |
524
|
|
|
'SWOOLE_TRACE_TIMER', |
525
|
|
|
'SWOOLE_TRACE_WEBSOCKET', |
526
|
|
|
'SWOOLE_TRACE_WORKER', |
527
|
|
|
'SWOOLE_UDP', |
528
|
|
|
'SWOOLE_UDP6', |
529
|
|
|
'SWOOLE_UNIX_DGRAM', |
530
|
|
|
'SWOOLE_UNIX_STREAM', |
531
|
|
|
'SWOOLE_USE_HTTP2', |
532
|
|
|
'SWOOLE_USE_SHORTNAME', |
533
|
|
|
'SWOOLE_VERSION', |
534
|
|
|
'SWOOLE_VERSION_ID', |
535
|
|
|
'SWOOLE_WEBSOCKET_CLOSE_ABNORMAL', |
536
|
|
|
'SWOOLE_WEBSOCKET_CLOSE_DATA_ERROR', |
537
|
|
|
'SWOOLE_WEBSOCKET_CLOSE_EXTENSION_MISSING', |
538
|
|
|
'SWOOLE_WEBSOCKET_CLOSE_GOING_AWAY', |
539
|
|
|
'SWOOLE_WEBSOCKET_CLOSE_MESSAGE_ERROR', |
540
|
|
|
'SWOOLE_WEBSOCKET_CLOSE_MESSAGE_TOO_BIG', |
541
|
|
|
'SWOOLE_WEBSOCKET_CLOSE_NORMAL', |
542
|
|
|
'SWOOLE_WEBSOCKET_CLOSE_POLICY_ERROR', |
543
|
|
|
'SWOOLE_WEBSOCKET_CLOSE_PROTOCOL_ERROR', |
544
|
|
|
'SWOOLE_WEBSOCKET_CLOSE_SERVER_ERROR', |
545
|
|
|
'SWOOLE_WEBSOCKET_CLOSE_STATUS_ERROR', |
546
|
|
|
'SWOOLE_WEBSOCKET_CLOSE_TLS', |
547
|
|
|
'SWOOLE_WEBSOCKET_FLAG_COMPRESS', |
548
|
|
|
'SWOOLE_WEBSOCKET_FLAG_FIN', |
549
|
|
|
'SWOOLE_WEBSOCKET_FLAG_MASK', |
550
|
|
|
'SWOOLE_WEBSOCKET_FLAG_RSV1', |
551
|
|
|
'SWOOLE_WEBSOCKET_FLAG_RSV2', |
552
|
|
|
'SWOOLE_WEBSOCKET_FLAG_RSV3', |
553
|
|
|
'SWOOLE_WEBSOCKET_OPCODE_BINARY', |
554
|
|
|
'SWOOLE_WEBSOCKET_OPCODE_CLOSE', |
555
|
|
|
'SWOOLE_WEBSOCKET_OPCODE_CONTINUATION', |
556
|
|
|
'SWOOLE_WEBSOCKET_OPCODE_PING', |
557
|
|
|
'SWOOLE_WEBSOCKET_OPCODE_PONG', |
558
|
|
|
'SWOOLE_WEBSOCKET_OPCODE_TEXT', |
559
|
|
|
'SWOOLE_WEBSOCKET_STATUS_ACTIVE', |
560
|
|
|
'SWOOLE_WEBSOCKET_STATUS_CLOSING', |
561
|
|
|
'SWOOLE_WEBSOCKET_STATUS_CONNECTION', |
562
|
|
|
'SWOOLE_WEBSOCKET_STATUS_HANDSHAKE', |
563
|
|
|
'SWOOLE_WORKER_BUSY', |
564
|
|
|
'SWOOLE_WORKER_EXIT', |
565
|
|
|
'SWOOLE_WORKER_IDLE', |
566
|
|
|
'WEBSOCKET_CLOSE_ABNORMAL', |
567
|
|
|
'WEBSOCKET_CLOSE_DATA_ERROR', |
568
|
|
|
'WEBSOCKET_CLOSE_EXTENSION_MISSING', |
569
|
|
|
'WEBSOCKET_CLOSE_GOING_AWAY', |
570
|
|
|
'WEBSOCKET_CLOSE_MESSAGE_ERROR', |
571
|
|
|
'WEBSOCKET_CLOSE_MESSAGE_TOO_BIG', |
572
|
|
|
'WEBSOCKET_CLOSE_NORMAL', |
573
|
|
|
'WEBSOCKET_CLOSE_POLICY_ERROR', |
574
|
|
|
'WEBSOCKET_CLOSE_PROTOCOL_ERROR', |
575
|
|
|
'WEBSOCKET_CLOSE_SERVER_ERROR', |
576
|
|
|
'WEBSOCKET_CLOSE_STATUS_ERROR', |
577
|
|
|
'WEBSOCKET_CLOSE_TLS', |
578
|
|
|
'WEBSOCKET_OPCODE_BINARY', |
579
|
|
|
'WEBSOCKET_OPCODE_CLOSE', |
580
|
|
|
'WEBSOCKET_OPCODE_CONTINUATION', |
581
|
|
|
'WEBSOCKET_OPCODE_PING', |
582
|
|
|
'WEBSOCKET_OPCODE_PONG', |
583
|
|
|
'WEBSOCKET_OPCODE_TEXT', |
584
|
|
|
'WEBSOCKET_STATUS_ACTIVE', |
585
|
|
|
'WEBSOCKET_STATUS_CLOSING', |
586
|
|
|
'WEBSOCKET_STATUS_CONNECTION', |
587
|
|
|
'WEBSOCKET_STATUS_FRAME', |
588
|
|
|
'WEBSOCKET_STATUS_HANDSHAKE', |
589
|
|
|
|
590
|
|
|
// https://youtrack.jetbrains.com/issue/WI-29503 |
591
|
|
|
'MONGODB_VERSION', |
592
|
|
|
'MONGODB_STABILITY', |
593
|
|
|
]; |
594
|
|
|
|
595
|
|
|
private SymbolRegistry $classes; |
596
|
|
|
private SymbolRegistry $functions; |
597
|
|
|
private SymbolRegistry $constants; |
598
|
|
|
|
599
|
|
|
public static function createWithPhpStormStubs(): self |
600
|
|
|
{ |
601
|
|
|
return new self( |
602
|
|
|
self::createSymbolList( |
603
|
|
|
array_keys(PhpStormStubsMap::CLASSES), |
604
|
|
|
self::MISSING_CLASSES, |
605
|
|
|
), |
606
|
|
|
self::createSymbolList( |
607
|
|
|
array_keys(PhpStormStubsMap::FUNCTIONS), |
608
|
|
|
self::MISSING_FUNCTIONS, |
609
|
|
|
), |
610
|
|
|
self::createConstantSymbolList( |
611
|
|
|
array_keys(PhpStormStubsMap::CONSTANTS), |
612
|
|
|
self::MISSING_CONSTANTS, |
613
|
|
|
), |
614
|
|
|
); |
615
|
|
|
} |
616
|
|
|
|
617
|
|
|
public static function createEmpty(): self |
618
|
|
|
{ |
619
|
|
|
return new self( |
620
|
|
|
SymbolRegistry::create(), |
621
|
|
|
SymbolRegistry::create(), |
622
|
|
|
SymbolRegistry::createForConstants(), |
623
|
|
|
); |
624
|
|
|
} |
625
|
|
|
|
626
|
|
|
private function __construct( |
627
|
|
|
SymbolRegistry $classes, |
628
|
|
|
SymbolRegistry $functions, |
629
|
|
|
SymbolRegistry $constants |
630
|
|
|
) { |
631
|
|
|
$this->classes = $classes; |
632
|
|
|
$this->functions = $functions; |
633
|
|
|
$this->constants = $constants; |
634
|
|
|
} |
635
|
|
|
|
636
|
|
|
public function withAdditionalSymbols( |
637
|
|
|
SymbolRegistry $classNames, |
638
|
|
|
SymbolRegistry $functionNames, |
639
|
|
|
SymbolRegistry $constantNames |
640
|
|
|
): self |
641
|
|
|
{ |
642
|
|
|
return new self( |
643
|
|
|
$this->classes->merge($classNames), |
644
|
|
|
$this->functions->merge($functionNames), |
645
|
|
|
$this->constants->merge($constantNames), |
646
|
|
|
); |
647
|
|
|
} |
648
|
|
|
|
649
|
|
|
public function isClassInternal(string $name): bool |
650
|
|
|
{ |
651
|
|
|
return $this->classes->matches($name); |
652
|
|
|
} |
653
|
|
|
|
654
|
|
|
public function isFunctionInternal(string $name): bool |
655
|
|
|
{ |
656
|
|
|
return $this->functions->matches($name); |
657
|
|
|
} |
658
|
|
|
|
659
|
|
|
public function isConstantInternal(string $name): bool |
660
|
|
|
{ |
661
|
|
|
return $this->constants->matches($name); |
662
|
|
|
} |
663
|
|
|
|
664
|
|
|
/** |
665
|
|
|
* @param string[] $sources |
666
|
|
|
*/ |
667
|
|
|
private static function createSymbolList(array ...$sources): SymbolRegistry |
668
|
|
|
{ |
669
|
|
|
return SymbolRegistry::create( |
670
|
|
|
array_merge(...$sources), |
671
|
|
|
); |
672
|
|
|
} |
673
|
|
|
|
674
|
|
|
/** |
675
|
|
|
* @param string[] $sources |
676
|
|
|
*/ |
677
|
|
|
private static function createConstantSymbolList(array ...$sources): SymbolRegistry |
678
|
|
|
{ |
679
|
|
|
return SymbolRegistry::createForConstants( |
680
|
|
|
array_merge(...$sources), |
681
|
|
|
); |
682
|
|
|
} |
683
|
|
|
} |
684
|
|
|
|