Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP 클래스 생성자에서 상수를 정의할 수 있을까요?

결론: 생성자에서는 상수 정의 불가

아니요, 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 형태로 호출할 수 있어 효율적입니다.