PHP 상수란 무엇인가?
상수(Constant)는 프로그램 실행 중 값이 변하지 않는 고정된 데이터를 의미합니다. 예를 들어 $x=10이나 $name="XYZ"와 같은 대입 표현식에서 10과 XYZ는 각각 변수에 할당되는 숫자형 상수와 문자열 상수입니다.
PHP에서는 define() 함수를 사용하여 사용자가 직접 정의한 식별자(이름)로 상수를 만들 수 있습니다. 한 번 정의된 상수는 스크립트 전체에서 변경 없이 사용할 수 있어 설정값이나 고정 데이터를 관리할 때 유용합니다.
define() 함수 문법
define ( string $name , mixed $value [, bool $case_insensitive = FALSE ] ) : bool
매개변수 설명
| 번호 | 매개변수 및 설명 |
|---|---|
| 1 | name 상수의 이름입니다. 일반적으로 대소문자를 구분하는 식별자로 지정합니다. |
| 2 | value 상수에 저장될 값입니다. 스칼라 값(정수, 실수, 문자열 등) 또는 배열을 사용할 수 있습니다. |
| 3 | case_insensitive 기본적으로 상수 식별자는 대소문자를 구분합니다. 이 매개변수를 true로 설정하면 name과 NAME을 동일하게 취급합니다. 단, PHP 7.3부터 이 기능은 권장되지 않으며(deprecated), PHP 8.0에서 완전히 제거되었습니다. |
반환값
상수 정의가 성공하면 TRUE를 반환하고, 실패하면 FALSE를 반환합니다.
define() 함수 사용 예제
다음 예제는 define() 함수를 사용하여 다양한 타입의 상수를 정의하는 방법을 보여줍니다.
<?php
define("maxmarks",300);
define("pi", 3.142);
define("subjects",["phy", "che", "maths"]);
?>위 코드에서 maxmarks는 정수형, pi는 실수형, subjects는 배열형 상수로 정의되었습니다. PHP 5.6 이상부터는 배열도 상수 값으로 사용할 수 있습니다.
PHP 매직 상수(Magic Constants)
PHP에는 미리 정의된 상수가 많이 있지만, 대부분은 해당 확장 모듈이 설치되어 있어야만 사용할 수 있습니다. 그러나 아래의 상수들은 별도의 확장 설치 없이 항상 사용 가능하며, 이들을 매직 상수라고 부릅니다.
| 이름 | 설명 |
| __LINE__ | 현재 파일에서의 줄 번호입니다. |
| __FILE__ | 파일의 전체 경로와 파일명입니다. |
| __DIR__ | 파일이 위치한 디렉터리 경로입니다. |
| __FUNCTION__ | 함수 이름입니다. 익명 함수(클로저)인 경우 {closure}를 반환합니다. |
| __CLASS__ | 클래스 이름입니다. 클래스가 선언된 네임스페이스를 포함합니다(예: Foo\Bar). PHP 5.4부터는 trait 내에서도 사용할 수 있으며, trait 메서드 안에서 사용하면 해당 trait을 사용하는 클래스의 이름을 반환합니다. |
| __TRAIT__ | trait 이름입니다. 선언된 네임스페이스를 포함합니다(예: Foo\Bar). |
| __METHOD__ | 클래스 메서드 이름입니다. |
| __NAMESPACE__ | 현재 네임스페이스의 이름입니다. |
매직 상수 사용 예제
다음 예제는 주요 매직 상수들의 실제 사용 방법과 출력 결과를 보여줍니다.
<?php
echo "Line no: " . __LINE__ . "\n";
echo "file name : " . __FILE__ . "\n";
echo "directory name: " . __DIR__ . "\n";
function myfunction(){
echo "function name: " . __FUNCTION__ . "\n";
}
class myclass{
public function __construct() {
echo __CLASS__ . "\n";
}
public function mymethod(){
echo __METHOD__;
}
}
$obj=new myclass();
$obj->mymethod();
?>실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Line no: 2 file name : C:\xampp\php\testscript.php directory name: C:\xampp\php myclass myclass::mymethod
마무리
PHP 상수는 한 번 정의하면 값을 변경할 수 없기 때문에 애플리케이션의 환경 설정, 최대값 제한, 경로 지정 등에 널리 활용됩니다. define() 함수 외에도 PHP 5.3부터는 const 키워드를 사용해 상수를 정의할 수 있으며, 클래스 내부에서도 const 키워드로 클래스 상수를 만들 수 있습니다. 매직 상수를 적절히 활용하면 디버깅과 로깅 작업을 더욱 편리하게 처리할 수 있습니다.