9. 장. 상수(Constants)

PHP는 몇개의 기본적인 상수들을 제공하고, 실행시 상수를 설정할 수 있는 메카니즘을 지원한다. 상수는 변수와 비슷하다. 그러나 define() 함수를 사용하여 선언한다는 것과 나중에 다른 값으로 바꿀 수 없다는 점이 차이가 있다.

미리 지정된 상수는 다음과 같다. :

__FILE__

현재 처리중인 스크립트의 파일명. 현재 파일이 include나 require로 포함된 파일이라면, include함수등을 호출한 부모 파일이 아닌, 포함된 파일의 이름을 가진다.

__LINE__

현재 처리중인 명령의 스크립트내에서의 라인 번호. 현재 파일이 include나 require로 포함된 파일이라면, include함수등을 호출한 부모 파일이 아닌, 포함된 파일내에서의 라인 번호를 가진다.

PHP_VERSION

현재 사용중인 PHP 파서의 버전. (예 : '3.0.8-dev')

PHP_OS

PHP 파서가 실행되고 있는 OS의 이름. (예 : 'Linux')

TRUE

참(TRUE) 값

FALSE

거짓(FALSE) 값

E_ERROR

문법 오류를 제외한 복구가 불가능한 에러를 표시한다.

E_WARNING

PHP가 어떤 계속 수행 가능한 오류를 감지 했음을 표시한다. 예를들어 ereg()에 regexp가 잘못된 경우 등이다.

E_PARSE

파서가 스크립트 파일에서 문법적으로 잘못된 명령을 만난 경우이다. 복구는 불가능하다.

E_NOTICE

에러는 아니지만 어떤 알릴 사항이 있음을 나타낸다. 실행은 계속된다. 예를들어 hash 인덱스에 따옴표가 없는 문자열이 사용되었다던지, 이전에 선언되지 않은 변수의 값을 읽는다던지 하는 경우이다.

E_ALL

'E_'로 시작되는 상수의 역활은 거의 동일하다. 이 상수가 error_reporting()와 같이 쓰인다면 PHP에서의 발생되는 경고나 에러를 출력시키는 역활을 한다.

E_* 상수는 대개 error_reporting() 함수를 사용하여 reporting 레벨을 정할 때 흔히 사용된다. 이것에 관련된 모든 상수는 Error handling부분을 보라.

사용자는 define()함수를 사용하여 추가적인 상수를 정의할 수 있다.

주의할 점은 상수는 C에서의 macro 값은 것이 아니다. 단지 scalar 값을 가질 수 있을 뿐이다.

예 9-1. Defining Constants

<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // 출력되는 결과는 "Hello world."이다.
?>

예 9-2. Using __FILE__ and __LINE__

<?php
function report_error($file, $line, $message) {
    echo "An error occured in $file on line $line: $message.";
}

report_error(__FILE__,__LINE__, "Something went wrong!");
?>