PHP 매직 상수
PHP 매직 상수 (Magic Constants)
PHP에는 소스 안에 그냥 적어 두면 PHP가 알아서 값을 채워 주는 특별한 상수들이 있어요. 이름 앞뒤로 밑줄 두 개(__)가 붙어 있는 것들이 바로 그것이고, 이걸 매직 상수라고 불러요. "어디에 쓰느냐"에 따라 값이 달라진다는 특징이 있죠. 예를 들어 __LINE__은 그 상수를 쓴 줄 번호를 값으로 돌려줘요.
이런 "매직" 상수들은 일반 상수와 달리 컴파일 시점에 이미 값이 정해져요. 일반 상수가 프로그램이 도는 동안인 런타임에 결정되는 것과 대비되는 부분이에요. 그리고 이 상수들은 대소문자를 가리지 않아요(case-insensitive). 어떤 경우에는 값이 달라질 수 있으니, 각각이 언제 어떤 값을 주는지 하나씩 살펴볼게요.
PHP의 매직 상수들
| 이름 | 설명 |
|---|---|
__LINE__ |
파일에서 그 상수를 쓴 현재 줄 번호. |
__FILE__ |
심볼릭 링크까지 해석된 파일의 전체 경로와 파일명. include 안에서 쓰면 포함된 파일(include 대상)의 이름을 돌려줘요. |
__DIR__ |
해당 파일이 있는 디렉토리. include 안에서 쓰면 포함된 파일의 디렉토리를 돌려줘요. dirname(__FILE__)과 같은 값이에요. 단, 루트 디렉토리가 아닌 한 마지막에 슬래시(/)가 붙지 않아요. |
__FUNCTION__ |
함수 이름. 익명 함수(anonymous function)에서는 {closure}로 나와요. |
__CLASS__ |
클래스 이름. 이름에는 선언된 네임스페이스가 포함돼요(예: Foo\Bar). 트레이트(trait) 메서드 안에서 쓰면 그 트레이트를 사용하는 클래스의 이름을 돌려줘요. |
__TRAIT__ |
트레이트 이름. 이름에는 선언된 네임스페이스가 포함돼요(예: Foo\Bar). |
__METHOD__ |
클래스 메서드 이름. |
__PROPERTY__ |
프로퍼티 후크(property hook) 안에서만 유효해요. 그 프로퍼티의 이름과 같아요. |
__NAMESPACE__ |
현재 네임스페이스의 이름. |
ClassName::class |
완전한(fully qualified) 클래스 이름. |