상수는 변수와 마찬가지로 자료형태의 데이터를 저장할 수 있지만 $가 붙지 않습니다. 상수는 한번 정의되면 변경하거나 해제할 수 없고, 스칼라 데이터만 가질 수 있습니다.
√ 상수 이름 앞에 달러표시($)가 없습니다. √ 상수는 전역변수처럼 함수나 클래스 내에서 사용할 수 있습니다. √ 상수는 변수의 유효범위 상관없이 어느 곳에서든 정의할 수 있습니다. √ 상수는 스칼라(boolean, integer, float, string) 값만 쓸 수 있습니다. √ 상수는 한 번 설정되면 재정의(변형)하거나 삭제할 수 없습니다. √ 상수 이름은 언더라인(_)으로 시작하길 권장하지 않습니다. √ 상수는 define함수로만 설정되고, defined 함수로 설정여부를 확인합니다. |
상수에는 "미리 정의된 상수"가 있는데, defined( ) 함수로 정의되었는지 확인이 가능합니다. 상수 이름에 정의되는 규칙에 벗어나지 않는다면 자유롭습니다.
■ 미리 정의된 상수
대표적인 "미리 정의된 상수"는 다음 표를 사용할 수 있습니다.
상수명 |
의 미 |
__FILE__ |
· 파일의 전체경로와 파일명, 절대경로 |
__LINE__ | · 파일의 현재 줄 라인 |
__DIR__ | · dirname( ) 함수와 _FILE_ 상수는 동일하나 마지막에 슬래시가 없음. php5.3부터 |
__FUNCTION__ | · 함수명을 표시. php5부터 |
__CLASS__ | · 클래스 메소드 명을 표시. php5부터 |
__METHOD__ | · 클래스 메소드 명을 표시. php5부터 |
__NAMESPACE__ | · 이 상수는 컴파일 시에 정의됩니다. php5.3부터 |
PHP_VERSION | · 서버에 설치된 PHP버전 |
PHP_OS |
· PHP가 실행중인 OS의 이름 |
TRUE | · TRUE (참), 1을 표시 |
FALSE | · FALSE (거짓), 빈 값을 표시 |
E_RROR | · 문법 오류가 아닌 복구가 불가능한 에러를 표시 |
E_WARNING | · PHP가 스크립트 실행에는 문제 없으나 오류가 있음을 표시 |
E_PARSE | · 스크립트에서 문법적으로 잘못도니 명령을 마난 경우 표시 |
E_NOTICE | · 에러는 아니지만 알리 사항이 있음을 표시 |
ex #01)
<?php echo __FILE__."
"; // 출력 : C:\Developer\Apache2.2\htdocs\ex01.php // 상수를 정의한 위치가 6라인 입니다. echo __LINE__."
"; // 출력 : 6 // PHP 버전 echo PHP_VERSION."
"; // 출력 : 5.2.13 echo PHP_OS."
"; // 출력 : WINT echo TRUE."
"; // 출력 : 1 echo FALSE."
"; // 출력 : // 함수명 상수 정의 function functionname() { echo __FUNCTION__; } functionname(); // 출력 : functionname // 클래스명 상수 정의 class classtest01 { var $test = __CLASS__; function test() { echo $this -> test; } } echo "
"; $test = new classtest01; echo $test -> test; // 출력 : classtest01 echo "
"; // 메소드명 상수 정의 class classtest02 { var $test = __METHOD__; function test() { echo $this -> test; } } $test = new classtest02; echo $test -> test; // 출력 : classtest02 ?>
■ define( ) 함수
bool defin(string $name, mixed $value [, bool $case_insensitive= false] ) (PHP 4, PHP5)
define( ) 함수로 사용자 상수를 만들 수 있습니다. 상수가 정의되었는 지 확인하려면 defined( ) 함수를 이용합니다.
name 인수 : 상수 이름을 지정합니다. value 인수 : 상수 값을 지정합니다. case_insensitive 인수 : 대소문자를 무시하려면 TRUE 로 설정합니다. |
ex #02)
<?php define("CONST","상수가 올바로 정의되었습니다."); if(defined("CONST")) { echo CONST; } // 결과: 상수가 올바로 정의되었습니다. ?>
defined( ) 함수로 상수가 정의되었는지 확인해 보겠습니다.
ex #03)
<?php define("CONST","상수가 올바로 정의되었습니다."); if(defined("CONST")) { echo CONST; } // 결과: 상수가 올바로 정의되었습니다. ?>
■ get_defined_constants( ) 함수
array get_defined_constants([bool $categorize]) (PHP 4 >= 4.1.0, PHP5)
현재 정의된 모든 상수의 이름과 값을 반환합니다. 여기에 사용자가 정의한 상수도 포함됩니다.
categorize 인수 : TRUE를 지정하여 키와 값을 배열로 반환 받을 수 있습니다. php5.0부터 |
ex #04)
<?php define("MY_CONSTANT", "상수를 정의합니다."); print_r(get_defined_constants(true)); /* 결과: Array ( [internal] => Array ( [E_ERROR] => 1 [E_WARNING] => 2 [E_PARSE] => 4 [E_NOTICE] => 8 [E_CORE_ERROR] => 16 [E_CORE_WARNING] => 32 [E_COMPILE_ERROR] => 64 [E_COMPILE_WARNING] => 128 [E_USER_ERROR] => 256 [E_USER_WARNING] => 512 [E_USER_NOTICE] => 1024 [E_ALL] => 2047 [TRUE] => 1 ) [pcre] => Array ( [PREG_PATTERN_ORDER] => 1 [PREG_SET_ORDER] => 2 [PREG_OFFSET_CAPTURE] => 256 [PREG_SPLIT_NO_EMPTY] => 1 [PREG_SPLIT_DELIM_CAPTURE] => 2 [PREG_SPLIT_OFFSET_CAPTURE] => 4 [PREG_GREP_INVERT] => 1 ) [user] => Array ( [MY_CONSTANT] => 상수를 정의합니다. ) ) */ ?>
다음은 categorize 인수에 설정하지 않았을 때의 결과입니다.
ex #05)
<?php define("MY_CONSTANT", "상수를 정의합니다."); print_r(get_defined_constants()); /* 결과: Array ( [E_ERROR] => 1 [E_WARNING] => 2 [E_PARSE] => 4 [E_NOTICE] => 8 [E_CORE_ERROR] => 16 [E_CORE_WARNING] => 32 [E_COMPILE_ERROR] => 64 [E_COMPILE_WARNING] => 128 [E_USER_ERROR] => 256 [E_USER_WARNING] => 512 [E_USER_NOTICE] => 1024 [E_ALL] => 2047 [TRUE] => 1 . . 생략 . . [MY_CONSTANT] => 상수를 정의합니다. ) */ ?>
'PHP > PHP Programming' 카테고리의 다른 글
[PHP] 세션 쿠키 설정 함수 (0) | 2015.04.08 |
---|---|
[PHP] 클래스의 기본문법 (3) | 2015.04.07 |
[PHP] 가변변수 (0) | 2015.03.29 |
[PHP] 정적변수 (0) | 2015.03.29 |
[PHP] CGI 환경변수 (0) | 2015.03.29 |