결론: 생성자에서는 상수 정의 불가
아니요, PHP에서는 클래스 생성자(constructor) 내부에서 상수를 정의할 수 없습니다. 상수는 반드시 클래스 레벨(class level)에서 정의해야 합니다.
그 이유는 PHP의 상수가 런타임이 아닌 컴파일 시점에 처리되기 때문입니다. 생성자는 객체가 인스턴스화될 때 실행되는 메서드이므로, 생성자 안에서 const 키워드를 사용하면 파싱 오류(parse error)가 발생합니다.
클래스 레벨에서 상수 정의하기
예를 들어 다음과 같은 클래스가 있다고 가정해 보겠습니다.
class ConstantDemo { }이 클래스에 const 키워드를 사용하여 상수를 정의하면 다음과 같습니다.
class ConstantDemo {
const LANGUAGE_NAME = "PHP";
}이렇게 정의된 상수는 ::(범위 해석 연산자, Scope Resolution Operator)를 통해 객체 인스턴스 없이도 클래스 이름으로 직접 접근할 수 있습니다.
전체 예제 코드
<!DOCTYPE html>
<html>
<body>
<?php
class ConstantDemo {
const LANGUAGE_NAME = "PHP";
}
echo "The language Name is=", ConstantDemo::LANGUAGE_NAME;
?>
</body>
</html>
실행 결과
The language Name is=PHP
정리
- 상수는 생성자가 아닌 클래스 본문(클래스 레벨)에서
const키워드로 정의합니다. - 클래스 상수는 기본적으로
public이며, PHP 7.1 이상에서는private,protected같은 접근 제한자를 지정할 수 있습니다. - 클래스 상수는 인스턴스를 생성하지 않고
ClassName::CONSTANT_NAME형태로 호출할 수 있어 효율적입니다.