2025. 6. 27. 00:44ㆍ프로그램/PHP 초급
📚 PHP 초급 - 2주차 - 03 상수 (define): 변하지 않는 값 선언하기

#변수 가 프로그램 실행 중에 값이 #변화 할 수 있는 #데이터 저장 공간이라면, #상수 는 한 번 #정의 되면 프로그램이 끝날 때까지 #재할당 할 수 없는 #고정된_값 입니다. PHP에서는 주로 define() 함수를 사용하여 #상수 를 #정의 합니다. 이번 포스팅에서는 PHP에서 #상수 를 #선언 하고 활용하는 방법을 자세히 알아보겠습니다.
1. #상수 란?

#상수 는 이름 그대로 항상 #같은_값 을 유지하는 #변하지_않는_값 입니다. 한 번 #정의 된 #상수 는 프로그램 실행 중에 그 값을 변경할 수 없습니다. 이는 특정 #값 이 실수로 #변경 되는 것을 방지하여 코드의 안정성을 높이는 데 유용합니다.
주로 다음과 같은 경우에 #상수 를 사용합니다.
- #변하지_않는_설정_값 (예: 데이터베이스 접속 정보, API 키 등)
- #고정된_수치 (예: 원주율 PI, 최대 허용치 등)
- #고정된_문자열 (예: 사이트명, 관리자 이메일 등)
2. define() 함수를 이용한 #상수 #정의

PHP에서 #상수 를 #정의 하는 가장 일반적인 방법은 define() 함수를 사용하는 것입니다.
define() 함수는 두 개 또는 세 개의 인자를 가집니다.
define(name, value, case_insensitive);
- name: #상수 의 이름을 지정합니다. (필수)
- value: #상수 에 #할당 할 값을 지정합니다. (필수)
- case_insensitive: true로 설정하면 #상수 이름을 대소문자 구분 없이 사용할 수 있습니다. 기본값은 false (대소문자 구분). PHP 7.3부터는 true로 설정하는 것이 권장되지 않습니다. 일반적으로 #상수 이름은 모두 대문자로 작성하고 대소문자를 구분하는 것이 관례입니다.
예시:
<?php
// 기본 상수 정의 (대소문자 구분)
define("SITE_NAME", "My Awesome Website");
define("PI", 3.14159);
define("MAX_USERS", 1000);
echo SITE_NAME; // 출력: My Awesome Website
echo "<br>";
echo PI; // 출력: 3.14159
echo "<br>";
echo MAX_USERS; // 출력: 1000
// define("SITE_NAME", "New Name"); // 이미 정의된 상수는 재할당 불가능 (오류 발생)
?>
3. #상수 사용 시 주의할 점
- #달러_기호_없음: #상수 를 사용할 때는 #변수 처럼 앞에 #달러_기호 ($)를 붙이지 않습니다.
- #대문자_관례: #상수 이름은 일반적으로 모두 대문자로 작성하고, 여러 단어는 밑줄(_)로 구분하는 것이 일반적인 #코딩_관례 입니다. 이는 #상수 와 #변수 를 시각적으로 구분하는 데 도움을 줍니다.
- #재정의_불가: 한 번 #정의 된 #상수 는 #재정의 할 수 없습니다. 이를 시도하면 PHP는 오류를 발생시킵니다.
- #스코프: define()으로 #정의 된 #상수 는 #전역_스코프 를 가지므로, 스크립트의 어느 곳에서든 접근할 수 있습니다. 함수 내부에서도 global 키워드 없이 바로 사용할 수 있습니다.

예시:
<?php
define("DB_HOST", "localhost");
function connectDatabase() {
// 함수 내부에서 DB_HOST 상수에 직접 접근 가능
echo "데이터베이스 호스트: " . DB_HOST;
}
connectDatabase(); // 출력: 데이터베이스 호스트: localhost
?>
4. #정의_여부_확인
특정 #상수 가 이미 #정의 되어 있는지 확인하려면 defined() 함수를 사용할 수 있습니다.
<?php
if (!defined("APP_VERSION")) {
define("APP_VERSION", "1.0.0");
echo "APP_VERSION 상수가 정의되었습니다: " . APP_VERSION;
} else {
echo "APP_VERSION 상수는 이미 정의되어 있습니다: " . APP_VERSION;
}
echo "<br>";
// 존재하지 않는 상수를 확인
if (defined("NON_EXISTENT_CONST")) {
echo "NON_EXISTENT_CONST 상수가 정의되어 있습니다.";
} else {
echo "NON_EXISTENT_CONST 상수는 정의되어 있지 않습니다.";
}
?>
5. #미리_정의된_상수
PHP에는 시스템에서 미리 #정의 해 둔 많은 #상수 들이 있습니다. 이들은 PHP의 환경 정보나 특정 함수의 반환 값 등을 나타냅니다.
예시:
- PHP_VERSION: 현재 PHP 버전
- __FILE__: 현재 파일의 전체 경로와 파일명
- __LINE__: 현재 코드의 줄 번호
- TRUE, FALSE, NULL: PHP의 예약어지만 #상수 로도 취급될 수 있습니다.
<?php
echo "현재 PHP 버전: " . PHP_VERSION;
echo "<br>";
echo "현재 파일: " . __FILE__;
echo "<br>";
echo "현재 줄: " . __LINE__;
?>
__FILE__, __LINE__ 등 __ (두 개의 밑줄)로 시작하고 끝나는 #상수 들은 매직_상수라고 불리며, PHP에 의해 동적으로 값이 결정됩니다.
결론
이번 시간에는 PHP에서 #상수 를 #정의 하고 사용하는 방법에 대해 알아보았습니다. #상수 는 프로그램 내에서 #변하지_않는_값 을 안전하게 관리하는 데 필수적인 요소입니다. #변수 와의 차이점을 명확히 이해하고, 적절한 상황에 #상수 를 활용하여 더욱 견고하고 유지보수가 쉬운 코드를 작성하시길 바랍니다.
'프로그램 > PHP 초급' 카테고리의 다른 글
| 📚 PHP 초급 - 3주차 - 01 산술, 할당, 비교, 논리, 증감 연산자: 값들을 조작하고 판단하기 (1) | 2025.06.27 |
|---|---|
| 📚 PHP 초급 - 2주차 - 05 데이터 타입 변환 (형 변환): 값의 형태 바꾸기 (0) | 2025.06.27 |
| 📚 PHP 초급 - 2주차 - 02 데이터 타입 (정수, 실수, 문자열, 불린, 배열, 객체, NULL): 정보의 형태 (0) | 2025.06.27 |
| 📚 PHP 초급 - 2주차 - 01 #변수 #선언 및 #할당 ($): 정보를 담는 그릇 (0) | 2025.06.27 |
| PHP 초급 - 1주차 - 05 HTML과 PHP 연동하기: 웹 페이지를 동적으로 만들기 (0) | 2025.06.27 |