본문으로 바로가기


  define() 함수나 const 키워드를 이용하면 상수를 정의할 수 있습니다. 상수는 변수와 달리 한 번 정의했으면 재정의하거나 미정의할 수 없고 한 번 저장된 값을 항상 유지합니다. 즉 어떠한 계산 등으로 이미 상수를 사용해도 상수의 값은 절대 달라지지 않습니다.


● define() 함수에 따라 상수 정의하기

  

  define() 함수를 사용하여 상수를 정의할 수 있습니다. 상수명은 문자나 언더바( _ )에서 시작되고 임의의 수의 문자, 숫자, 그리고 언더바가 이어집니다. 상수명의 첫번째 글자에는 숫자를 사용할 수 없습니다. 상수값은 스칼라(scalar) 값 또는 null이어야 하지만 변수나 연산 결과, 함수의 반환값이라도 지정할 수 있습니다.

  스칼라 값이란, 정수와 부동 소수점 수, 문자열, 논리값 중 하나입니다. 상수명은 기본적으로 영문자의 대문자와 소문자를 구별하지만, 다음과 같이 제 3인수에 true를 지정하면 영문자의 대문자와 소문자를 구분하지 않습니다.


define('상수명', 값, true);



  예를 들어 상수명이 'APPLE'인 경우에는 'apple'에서도 지정한 상수값을 호출할 수 있습니다.


● const 키워드에 따라 상수 정의하기

  

  PHP 5.3 이후부터 const 키워드를 새롭게 이용할 수 있게 되었습니다.


const 상수명 = 값;


  기본적으로 define() 함수로 정의했을 경우과 같지만, 영문자의 대문자와 소문자를 구별하지 않게 할 수는 없습니다. define() 함수에서는 프로그램이 실행될 때 상수가 정의되지만, const 키워드로 서술한 경우에는 프로그램이 읽힌 시점으로 정의되기때문에 상수값에 변수나 연산 결과, 함수의 반환값 등을 지정하거나 함수나 루프, if문에 쓸 수 없습니다. 만약 이러한 장소에 쓰면 Parse 오류가 발생합니다.


● 상수 사용하기

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>상수를 사용하려면?</title>
</head>
<body>
<div>
<?php
// 상수를 정의합니다.
define('HELLO', 'Hello world!');
echo '상수: HELLO: ' . HELLO . '
'; // 상수 Hello는 정의되지 않아 Notice 에러가 발생합니다. echo '상수: Hello: ' . Hello . '
'; // 상수 정의의 반환 값을 $result에 대입합니다. 세번째 인수에 true를 지정하여 대문자·소문자를 구별하지 않도록 합니다. $result = define('GREETING', '안녕', true); if ($result) { echo '상수: GREETING: ' . GREETING . '
'; echo '상수: Greeting: ' . Greeting . '
'; } else { echo '상수 정의에 실패했습니다.' . '
'; } // PHP5.3 이후에서는 const 키워드를 사용해도 정의할 수 있습니다. const WORLD = 'World'; echo '상수: WORLD: ' . WORLD; ?> </div> </body> </html>

실행 결과