개요
PHP의 get_declared_classes() 함수는 현재 스크립트에서 정의(선언)된 모든 클래스의 이름을 배열(array) 형태로 반환하는 내장 함수입니다. 이 함수를 활용하면 PHP 코어에서 기본으로 제공하는 클래스뿐만 아니라, 로드된 확장 모듈이나 직접 작성한 클래스까지 한눈에 확인할 수 있어 디버깅이나 리플렉션 작업 시 매우 유용합니다.
문법
get_declared_classes(void)
매개변수
void − 이 함수는 별도의 매개변수를 받지 않습니다.
반환값
현재 스크립트에서 선언된 클래스 이름들을 문자열 요소로 담은 배열을 반환합니다. 반환되는 목록에는 stdClass, Exception 같은 PHP 기본 클래스와 함께, 설치된 확장 모듈(PDO, mysqli, SPL 등)에서 제공하는 클래스가 포함됩니다.
예제
다음은 get_declared_classes() 함수의 기본적인 사용 예제입니다.
<?php
print_r(get_declared_classes());
?>
실행 결과
위 코드를 실행하면 아래와 같이 선언된 클래스 이름들이 인덱스와 함께 출력됩니다. 실제 출력 결과는 PHP 버전과 설치된 확장 모듈에 따라 달라질 수 있습니다.
Array
(
[0] => stdClass
[1] => Exception
[2] => ErrorException
[3] => Error
[4] => ParseError
[5] => TypeError
[6] => ArgumentCountError
[7] => ArithmeticError
[8] => DivisionByZeroError
[9] => Closure
[10] => Generator
[11] => ClosedGeneratorException
[12] => DateTime
[13] => DateTimeImmutable
[14] => DateTimeZone
[15] => DateInterval
[16] => DatePeriod
[17] => LibXMLError
[18] => ReflectionException
[19] => Reflection
[20] => ReflectionFunctionAbstract
[21] => ReflectionFunction
[22] => ReflectionGenerator
[23] => ReflectionParameter
[24] => ReflectionType
[25] => ReflectionNamedType
[26] => ReflectionMethod
[27] => ReflectionClass
[28] => ReflectionObject
[29] => ReflectionProperty
[30] => ReflectionClassConstant
[31] => ReflectionExtension
[32] => ReflectionZendExtension
[33] => LogicException
[34] => BadFunctionCallException
[35] => BadMethodCallException
[36] => DomainException
[37] => InvalidArgumentException
[38] => LengthException
[39] => OutOfRangeException
[40] => RuntimeException
[41] => OutOfBoundsException
[42] => OverflowException
[43] => RangeException
[44] => UnderflowException
[45] => UnexpectedValueException
[46] => RecursiveIteratorIterator
[47] => IteratorIterator
[48] => FilterIterator
[49] => RecursiveFilterIterator
[50] => CallbackFilterIterator
[51] => RecursiveCallbackFilterIterator
[52] => ParentIterator
[53] => LimitIterator
[54] => CachingIterator
[55] => RecursiveCachingIterator
[56] => NoRewindIterator
[57] => AppendIterator
[58] => InfiniteIterator
[59] => RegexIterator
[60] => RecursiveRegexIterator
[61] => EmptyIterator
[62] => RecursiveTreeIterator
[63] => ArrayObject
[64] => ArrayIterator
[65] => RecursiveArrayIterator
[66] => SplFileInfo
[67] => DirectoryIterator
[68] => FilesystemIterator
[69] => RecursiveDirectoryIterator
[70] => GlobIterator
[71] => SplFileObject
[72] => SplTempFileObject
[73] => SplDoublyLinkedList
[74] => SplQueue
[75] => SplStack
[76] => SplHeap
[77] => SplMinHeap
[78] => SplMaxHeap
[79] => SplPriorityQueue
[80] => SplFixedArray
[81] => SplObjectStorage
[82] => MultipleIterator
[83] => SessionHandler
[84] => __PHP_Incomplete_Class
[85] => php_user_filter
[86] => Directory
[87] => AssertionError
[88] => CURLFile
[89] => finfo
[90] => PDOException
[91] => PDO
[92] => PDOStatement
[93] => PDORow
[94] => PharException
[95] => Phar
[96] => PharData
[97] => PharFileInfo
[98] => SQLite3
[99] => SQLite3Stmt
[100] => SQLite3Result
[101] => mysqli_sql_exception
[102] => mysqli_driver
[103] => mysqli
[104] => mysqli_warning
[105] => mysqli_result
[106] => mysqli_stmt
)
정리
get_declared_classes()는 매개변수 없이 간단히 호출할 수 있으며, 현재 환경에서 사용 가능한 클래스 목록을 파악하는 데 유용한 함수입니다. 특정 클래스가 존재하는지 확인하려면 in_array()와 함께 사용하거나, 단일 클래스 여부만 필요하다면 class_exists() 함수를 사용하는 것이 더 효율적입니다.