PHP는 어떤스크립트에서도 유효한 많은 수의 미리 정의된 상수를 제공한다. 하지만 이 상수의 대부분은 다양한 확장(extension)에 의해 생성된다. 그래서 그 확장이 같이 컴파일되어 유효하거나 동적인 로딩이 되어있어야 이런 상수가 존재하게 된다.
여덟 가지 마법 상수가 존재한다. 이 상수들은
어디에서 쓰느냐에 따라 용도가 변경된다. 예를 들면,
__LINE__
상수의 값은 스크립트의 해당 줄과
관련이 있다. 이 특별한 상수들은 대소문자 구별이 없고 다음과 같다:
이름 | 설명 |
---|---|
__LINE__ |
파일의 현재 줄 번호 |
__FILE__ |
심볼릭 링크를 통해 해석된 경우를 포함한 파일의 전체 경로와 이름. include 내부에서 사용할 경우, include된 파일명이 반환됩니다. |
__DIR__ |
파일의 디렉토리. 포함한 파일 안에서는, 포함된 파일의 디렉토리를 반환합니다. 이는 dirname(__FILE__)과 동일합니다. 디렉토리명은 루트 디렉토리가 아닌 이상, 마지막에 슬래시가 없습니다. |
__FUNCTION__ |
The function name. |
__CLASS__ |
클래스명. (PHP 4.3.0에서 추가) PHP 5부터 이 상수는 정의된 그대로의 클래스명을 반환합니다. (대소문자 구분) PHP 4에서는 항상 소문자였습니다. 클래스명은 선언한 이름공간을 포함합니다. (예. Foo\Bar) PHP 5.4부터 __CLASS__는 trait에서도 동작합니다. trait 메소드 안에서 사용할 때, __CLASS__는 trait가 사용되는 클래스명입니다. |
__TRAIT__ |
trait 명. trait 명은 이를 선언한 네임스페이스를 포함합니다. (예. Foo\Bar) |
__METHOD__ |
클래스 메소드명. |
__NAMESPACE__ |
현재 네임스페이스 이름. |
참고: get_class(), get_object_vars(), file_exists(), function_exists().
버전 | 설명 |
---|---|
5.4.0 |
__TRAIT__ 상수 추가됨
|
5.3.0 |
__DIR__ 와 __NAMESPACE__ 상수가 추가됨
|
5.0.0 |
__METHOD__ 상수가 추가됨
|
5.0.0 | 이 버전 이전에는 마법 상수의 값은 언제나 소문자였습니다. 이제는 모든 버전에서 대소문자를 구분합니다(선언 당시의 이름이 됩니다). |
4.3.0 |
__FUNCTION__ 과 __CLASS__ 상수가 추가됨
|
4.0.2 |
__FILE__ 은 기존 버전에서 특정 상황에서 상대경로로 나타나는 것과 달리 언제나 심볼릭 링크로 해석된 절대경로를 나타냅니다.
|