Loading

블로그채널

Search !

[PHP] 강좌 #8 상수 Constant, define 함수


변수 반대말은 상수입니다. 변수는 변하는 값이고 상수는 변하지 않는 항상 일정한 값을 말합니다. 한자로는 常數, 영어로는 constant입니다.


상수가 필요한 이유

변수에 값을 넣어두면 그만인데 상수가 왜 필요할까요?


변수는 값이 고정이 되어 있지 않기 때문에 변경될 소지가 큽니다. 예를 들어 변수 $luckyNumber에 7이라는 숫자를 넣었습니다. 어떤 변수가 행운의 숫자일 때 이벤트를 하는 그런 프로그램을 만들었어요. 그런데 프로그램을 하다 보니 다음과 같이 실수를 하고 말았습니다.

$luckyNumber = 7; // 행운의 숫자
$inputNumber = 2; // 입력된 숫자
if ( $luckyNumber = $inputNumber ) {
        // == 넣어야하는데 실수로 =를 넣음
        // $luckyNumber 값 2로 변경
 echo "축하합니다. 당첨되셨습니다.";
 echo $luckyNumber*$inputNumber; // 출력: 4
}


변수 $inputNumber에 1이 들어가 있다고 가정합니다.

행운의 숫자 $luckyNumber와 입력된 숫자 $inputNumber가 서로 같으면 “축하합니다. 당첨되셨습니다.”를 출력하고 싶었지만 실수로 같다는 == 기호 대신 값을 대입하라는 = 기호를 사용하고 말았습니다. 결국 변수 $luckyNumber와 $inputNumber의 값을 서로 비교하는 것이 아니라 $luckyNumber에 $inputNumber의 값 2를 넣겠다는 이야기이지요. 그리고 나서 두 값을 곱했더니 7*2 = 14가 아니라 2*2 = 4가 출력되고 만 것입니다.


행운의 숫자가 7로 항상 고정되어야했지만 변수이다 보니 불변해야했던 내용이 바뀌고 만 것이죠. 이처럼 항상 고정불변해야 할 값이 변경되면 엄청난 재앙을 불러올 수도 있기 때문에 이런 경우에 한번 설정하고 난 뒤에 바뀌지 않는 값이 필요합니다.


상수로 만들어주는 역할을 define 함수가 담당합니다.


소소코드는 아래의 사이트 예제를 참고하세요.


http://www.w3schools.com/php/php_constants.asp

[PHP] 강좌 #8 상수 Constant, define 함수

[PHP] 강좌 #8 상수 Constant, define 함수


SPAN style="FONT-SIZE: 18pt">문법

 

define(name, value, case-insensitive)

 

define 함수 사용 방법은 간단합니다. 상수이름, 상숫값, 대소문자 구분 값을 넣어줍니다. 대소문자 구분에 아무런 값을 넣지 않는다면 구분하지 않겠다는 이야기이고 true값을 넣으면 대소문자를 확실히 구분한다는 의미입니다.

define("GREETING", "Welcome to blogCHANNEL.tistory.com!");
echo GREETING;

 

위 예제는 상수이름에 대소문자를 가리지 않고 정의했습니다.

 

define("GREETING", "Welcome to blogCHANNEL.tistory.com!", true);
echo greeting;


위 예제는 상수이름에 대소문자를 구분하여 정의했습니다. 대문자로 상수이름을 만들어놓고 소문자로 사용하면 실행이 되지 않습니다. 상수는 한번 설정하면 고정불변의 값으로 함수 안에서도 사용할 수 있습니다.

 

define("GREETING", "Welcome to blogCHANNEL.tistory.com!");

function myTest() {
    echo GREETING;
}
 
myTest();


상숫값을 왜 써야할까요?


1. 실수 방지

서두에 이야기했지만 값이 변경되면 안되는 경우 상수로 만들어주면 실수를 미연에 방지할 수 있습니다. if 문으로 비교할 때 항상 상수값을 왼편에 넣는 것이 안전한 코딩 습관입니다. 상수 값에 어떤 값을 대입할 수는 없으니까요.


2. 편리함

예를 들어 파이(PI)는 3.14159265358979입니다. 계산할 때 저 값 대신 PI라는 말로 대체하면 아주 편리할 것입니다.

3. 관리용이
예를 들어 “tistory.com”이라는 문자열을 여기저기 사용했다고 가정하겠습니다. 티스토리 주소가 “ts.com”으로 변경되었습니다. 그러면 여기저기 소스 코드를 전부 뒤져서 “tistory.com” 문자열을 “ts.com”로 변경해줘야 합니다.

그 문자열이 100개라면 100개 모두 찾아서 고쳐야합니다. 실수로 뭘 잘못 건드려 소스코드가 엉망이 되었습니다. 문제네요. 만약에 “tistory.com”이 아래 코드처럼 상수로 관리되었다면 문자열 “tistory.com”을 “ts.com”으로 변경시켜주면 단 1초 만에 모든 것이 해결될 것입니다.

변경전: define("tistoryAddress", "tistory.com");
변경전: define("tistoryAddress", "ts.com");


define 함수의 사용방법은 아주 쉬었습니다. 상수에 대한 개념은 PHP 언어뿐만 아니라 프로그래밍 언어 공통적으로 해당되는 사항이니 알아두시면 참 유용합니다.


다음 시간에는 연산자 Operators에 대해 살펴보겠습니다.

 

[Copyright ⓒ 블로그채널 무단전재 및 재배포 금지]