PHP 매뉴얼
이전 |  | 다음

# 8. 장. 상수

상수는 단순한 값을 위한 식별자(이름)이다. 이름이 제시하는것과 같이, 이 값은 스크립트 실행중에는 변경될수 없다. (실질적으로 상수가 아닌 magic constants 을 제외하고) 상수는 기본적으로 대소문자를 구별한다. 관례상, 상수 식별자는 항상 대문자이다.

PHP에서 상수명은 같은 규칙을 따른다. 유효한 상수명은 문자나 밑줄(underscore) 로 시작하고 다른 문자나 숫자, 밑줄이 뒤를 따른다. 정규식으로는 다음처럼 표현할수 있다: `[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*`

> 참고: 여기서 문자는 a-z, A-Z와 아스키(ASCII)문자 127에서 255까지이다 (0x7f-0xff).

superglobals처럼 상수의 유효범위(scope)는 전역적이다. 유효범위에 상관없이 스크립트의 어느곳에서도 상수를 참조할수 있다. 상수에 관한 더 자세한 정보를 위해 변수 유효범위(variable scope) 매뉴얼 섹션을 참고합니다.

# 문법

define()함수를 써서 상수를 정의(define)할수 있다. 상수는 한번 정의되면 절대 변경하거나 해제(undefine)할수 없다.

스칼라 데이터(boolean, integer, float 과 string)만 상수의 값으로 쓸수있다.

단순히 상수명을 써서 상수값을 얻을 수 있다. 변수와는 달리 `$`가 상수명 앞으로 오면 안된다 동적으로 상수명을 취하려한다면 constant()함수로 상수값을 가져올수 있다. 정의된 모든 상수 목록을 구하려면 get_defined_constants() 함수를 쓴다.

> 참고: 상수와 (전역)변수는 서로 다른 네임스페이스(namespace)상에 있다. 이말의 의미는 예를 들면 `TRUE`와 `$TRUE`은 일반적으로 다르다는것이다.

해제된 상수를 사용한다면, PHP는 상수명 자체를 쓴것이라고 가정할것이다 즉,string으로 인식할것이다. (CONSTANT vs "CONSTANT") E_NOTICE로 이런 일이 발생했는지 알수 있다. 왜 $foo[bar]가 잘못됐는지 (`bar`를 상수로 define() 하지않았다면) 매뉴얼을 참고한다. 단순히 상수가 설정되었는지만 확인하려 한다면 defined()함수를 쓰면 됩니다.

다음은 상수와 변수의 차이점이다:

- 상수는 이름 앞에 달러표시(`$`)가 없다.

- 상수는 단순 지정(assingment)이 아니라 define() 함수로만 정의될수 있다.

- 상수는 변수의 유효범위 규칙과는 상관없이 어느곳에서든 정의되거나 값을 취할수 있다.

- 상수는 한번 설정되면 재정의하거나 해제할수 없을것이다; 그리고

- 상수는 스칼라 값만 쓸수 있다.

예 8-1. 상수 정의하기

`<?php define("CONSTANT", "Hello world."); echo CONSTANT; // "Hello world."을 출력한다 echo Constant; // "Constant"를 출력하고 경고가 뜬다. ?>`

이전 | 처음으로 | 다음
PHP 외부 출신의 변수들 | 위로 | 미리 정의된 상수