Для получения массива всех функций которые доступны для использования в PHP(с учётом подключённых модулей, а не в целом список всех возможных функций) можно воспользоваться функцией get_defined_functions(); она вернёт 2 массива, а именно с ключами internal и user, первый из которых будет содержать имена стандартных функций PHP, второй имена функций объявленных пользователями.
Для того чтобы получить список классов которые доступны в PHP(аналогично как и в случаи для функций будет возвращён массив содержащий имена классов, которые доступны в той версии PHP из которой производится вызов, с учётом подключённых расширений PHP) можно воспользоваться функций get_declared_classes(); В результате будет возвращён массив содержащий имена классов, то-есть в отличии от рассмотренной выше функции для получения имён функций массив с классами не будет содержать отдельного подмассива с именами классов указанных пользователем, то-есть будет возвращён именно единый массив в классами. Если класс объявлен для какого либо пространства имён, то в значении элемента указанного массива будет содержаться имя класса с указанием перед ним пространства имён, например "FTP\Connection".
Так же размещу по крайней мере пока информацию про функции token_get_all() и token_name() здесь
В процессе изучения вопроса получения списка функций и классов в PHP нашёл код, в котором в частности использовалось 2 функции, а именно token_get_all и token_name которые предположительно могут быть использованы при парсинге кода на языке PHP. В листинге ниже приведён пример кода, в котором функции token_get_all передаётся переменная содержащая код на языке PHP(переменной можно было так же присвоить код какого либо PHP-файла используя для этого функцию file_get_contents).
В приведённом выше листинге вызов var_dump($tokens); возвращает результат приведённый ниже.
Так же в приведённом выше листинге с PHP-кодом выполнение цикла foreach следующего за вызовом var_dump($tokens); возвращает результат приведённый ниже. В этом результате в 3-ей строке видно, что перенос строки который следует вместе с пробелом который следует перед ним(переносом строки) и после его(переноса строки) считается как единый пробел. Так же в 6-ой строке видно что для функции fopen вызов функции token_name возвращает значение T_STRING, для echo вызов token_name возвращает значение T_ECHO, что видно в второй строке приведённого результата возвращённого циклом foreach, таким образом для того чтобы в частности понять могут ли функции token_get_all и token_name быть полезны для парсинга PHP кода, возможно имеет смысл детальнее изучить работу указанных функций.
Выше было продемонстрировано, что элементами массива возвращаемого функцией token_get_all могут быть строки(например которая содержит значение точки с запятой, так же пока что не выяснено, может ли быть какое то ещё строковое значение или точка с запятой это единственное) или массив, который содержит в себе 3 элемента, первый из которых(с индексом 0) видимо идентификатор который может быть передан функции token_name, второе значение содержит строку рассматриваемой конструкции в строке, и третье значение(с индексом 2) - номер строки в которой находится рассматриваемая конструкция в переданной функции token_get_all строковой переменной. Касаемо идентификаторов передаваемых функции token_name было решено выяснить какими они могут быть и какое значение для них возвращает функция token_name, для этого был написан PHP-скрипт примерно такой же как в листинге ниже(от исходного он отличается диапазоном цикла).
В результате передачи различных параметров функции token_name с использованием скрипта описанного выше, выяснилось что если передавать функции значения параметров от 0 до 259(включительно) и предположительно значений больших или равных 406, то функция token_name возвращает строку "UNKNOWN"(без кавычек), в остальных случаях функция tokn_name возвращает значения приведённые в таблице ниже(эта таблица получена в результате выполнения скрипта приведённого в листинге выше).
| Значение передаваемого параметра | Результат возвращённый функцией token_name() |
| 240 | UNKNOWN |
| 241 | UNKNOWN |
| 242 | UNKNOWN |
| 243 | UNKNOWN |
| 244 | UNKNOWN |
| 245 | UNKNOWN |
| 246 | UNKNOWN |
| 247 | UNKNOWN |
| 248 | UNKNOWN |
| 249 | UNKNOWN |
| 250 | UNKNOWN |
| 251 | UNKNOWN |
| 252 | UNKNOWN |
| 253 | UNKNOWN |
| 254 | UNKNOWN |
| 255 | UNKNOWN |
| 256 | UNKNOWN |
| 257 | UNKNOWN |
| 258 | UNKNOWN |
| 259 | UNKNOWN |
| 260 | T_LNUMBER |
| 261 | T_DNUMBER |
| 262 | T_STRING |
| 263 | T_NAME_FULLY_QUALIFIED |
| 264 | T_NAME_RELATIVE |
| 265 | T_NAME_QUALIFIED |
| 266 | T_VARIABLE |
| 267 | T_INLINE_HTML |
| 268 | T_ENCAPSED_AND_WHITESPACE |
| 269 | T_CONSTANT_ENCAPSED_STRING |
| 270 | T_STRING_VARNAME |
| 271 | T_NUM_STRING |
| 272 | T_INCLUDE |
| 273 | T_INCLUDE_ONCE |
| 274 | T_EVAL |
| 275 | T_REQUIRE |
| 276 | T_REQUIRE_ONCE |
| 277 | T_LOGICAL_OR |
| 278 | T_LOGICAL_XOR |
| 279 | T_LOGICAL_AND |
| 280 | T_PRINT |
| 281 | T_YIELD |
| 282 | T_YIELD_FROM |
| 283 | T_INSTANCEOF |
| 284 | T_NEW |
| 285 | T_CLONE |
| 286 | T_EXIT |
| 287 | T_IF |
| 288 | T_ELSEIF |
| 289 | T_ELSE |
| 290 | T_ENDIF |
| 291 | T_ECHO |
| 292 | T_DO |
| 293 | T_WHILE |
| 294 | T_ENDWHILE |
| 295 | T_FOR |
| 296 | T_ENDFOR |
| 297 | T_FOREACH |
| 298 | T_ENDFOREACH |
| 299 | T_DECLARE |
| 300 | T_ENDDECLARE |
| 301 | T_AS |
| 302 | T_SWITCH |
| 303 | T_ENDSWITCH |
| 304 | T_CASE |
| 305 | T_DEFAULT |
| 306 | T_MATCH |
| 307 | T_BREAK |
| 308 | T_CONTINUE |
| 309 | T_GOTO |
| 310 | T_FUNCTION |
| 311 | T_FN |
| 312 | T_CONST |
| 313 | T_RETURN |
| 314 | T_TRY |
| 315 | T_CATCH |
| 316 | T_FINALLY |
| 317 | T_THROW |
| 318 | T_USE |
| 319 | T_INSTEADOF |
| 320 | T_GLOBAL |
| 321 | T_STATIC |
| 322 | T_ABSTRACT |
| 323 | T_FINAL |
| 324 | T_PRIVATE |
| 325 | T_PROTECTED |
| 326 | T_PUBLIC |
| 327 | T_READONLY |
| 328 | T_VAR |
| 329 | T_UNSET |
| 330 | T_ISSET |
| 331 | T_EMPTY |
| 332 | T_HALT_COMPILER |
| 333 | T_CLASS |
| 334 | T_TRAIT |
| 335 | T_INTERFACE |
| 336 | T_ENUM |
| 337 | T_EXTENDS |
| 338 | T_IMPLEMENTS |
| 339 | T_NAMESPACE |
| 340 | T_LIST |
| 341 | T_ARRAY |
| 342 | T_CALLABLE |
| 343 | T_LINE |
| 344 | T_FILE |
| 345 | T_DIR |
| 346 | T_CLASS_C |
| 347 | T_TRAIT_C |
| 348 | T_METHOD_C |
| 349 | T_FUNC_C |
| 350 | T_NS_C |
| 351 | T_ATTRIBUTE |
| 352 | T_PLUS_EQUAL |
| 353 | T_MINUS_EQUAL |
| 354 | T_MUL_EQUAL |
| 355 | T_DIV_EQUAL |
| 356 | T_CONCAT_EQUAL |
| 357 | T_MOD_EQUAL |
| 358 | T_AND_EQUAL |
| 359 | T_OR_EQUAL |
| 360 | T_XOR_EQUAL |
| 361 | T_SL_EQUAL |
| 362 | T_SR_EQUAL |
| 363 | T_COALESCE_EQUAL |
| 364 | T_BOOLEAN_OR |
| 365 | T_BOOLEAN_AND |
| 366 | T_IS_EQUAL |
| 367 | T_IS_NOT_EQUAL |
| 368 | T_IS_IDENTICAL |
| 369 | T_IS_NOT_IDENTICAL |
| 370 | T_IS_SMALLER_OR_EQUAL |
| 371 | T_IS_GREATER_OR_EQUAL |
| 372 | T_SPACESHIP |
| 373 | T_SL |
| 374 | T_SR |
| 375 | T_INC |
| 376 | T_DEC |
| 377 | T_INT_CAST |
| 378 | T_DOUBLE_CAST |
| 379 | T_STRING_CAST |
| 380 | T_ARRAY_CAST |
| 381 | T_OBJECT_CAST |
| 382 | T_BOOL_CAST |
| 383 | T_UNSET_CAST |
| 384 | T_OBJECT_OPERATOR |
| 385 | T_NULLSAFE_OBJECT_OPERATOR |
| 386 | T_DOUBLE_ARROW |
| 387 | T_COMMENT |
| 388 | T_DOC_COMMENT |
| 389 | T_OPEN_TAG |
| 390 | T_OPEN_TAG_WITH_ECHO |
| 391 | T_CLOSE_TAG |
| 392 | T_WHITESPACE |
| 393 | T_START_HEREDOC |
| 394 | T_END_HEREDOC |
| 395 | T_DOLLAR_OPEN_CURLY_BRACES |
| 396 | T_CURLY_OPEN |
| 397 | T_DOUBLE_COLON |
| 398 | T_NS_SEPARATOR |
| 399 | T_ELLIPSIS |
| 400 | T_COALESCE |
| 401 | T_POW |
| 402 | T_POW_EQUAL |
| 403 | T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG |
| 404 | T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG |
| 405 | T_BAD_CHARACTER |
| 406 | UNKNOWN |
| 407 | UNKNOWN |
| 408 | UNKNOWN |
| 409 | UNKNOWN |
| 410 | UNKNOWN |