개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.18 11:59

ReflectionExtension::getConstants 관련 질문

목록
  • 그래프이론도령 17시간 전 2025.05.18 11:59 새글
  • 2
    1
제가 ReflectionExtension::getConstants 메서드를 사용하여 클래스의 상수를 가져오려 하지만, 사용법에 대해 조금 혼란스럽습니다.

getConstants 메서드는 클래스의 상수 필드를 가져올 때, 상수 필드가 클래스 인스턴스 변수일 경우에는 어떻게 작동하나요?

예를 들어, 클래스에 인스턴스 변수가 선언되어 있고, 그 변수의 값을 상수로 정의한 경우, getConstants 메서드는 이 상수를 가져올 수 있나요?

아래의 코드를 예로 들면, 인스턴스 변수 $exampleVar이 선언되어 있습니다. 이 변수의 값을 상수로 정의한 경우, getConstants 메서드는 이 상수를 가져올 수 있나요?

php

class MyClass {

    public $exampleVar = 10;

    const EXAMPLE_CONSTANT = $exampleVar;

}



이러한 경우, getConstants 메서드는 상수를 가져올 수 있나요?

혹시 예제 코드를 통해 설명해주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  17시간 전



    ReflectionExtension::getConstants 메서드는 클래스의 상수 필드를 가져올 때, 상수 필드가 클래스 인스턴스 변수일 경우에는 작동하지 않습니다.

    인스턴스 변수는 런타임 시에 생성되기 때문에, ReflectionExtension::getConstants 메서드는 컴파일 시에 클래스의 상수 필드를 가져올 수 있습니다.

    예를 들어, 클래스에 인스턴스 변수가 선언되어 있고, 그 변수의 값을 상수로 정의한 경우, getConstants 메서드는 이 상수를 가져올 수 없습니다.

    #hostingforum.kr
    php
    
    class MyClass {
    
        public $exampleVar = 10;
    
        const EXAMPLE_CONSTANT = $exampleVar;
    
    }
    
    
    
    $reflectionClass = new ReflectionClass('MyClass');
    
    $constants = $reflectionClass->getConstants();
    
    
    
    print_r($constants);
    
    


    이 코드를 실행하면, EMPTY ARRAY가 출력됩니다.

    이유는 getConstants 메서드는 인스턴스 변수의 값을 상수로 정의한 경우, 상수를 가져올 수 없기 때문입니다.

    #hostingforum.kr
    php
    
    class MyClass {
    
        public $exampleVar = 10;
    
        const EXAMPLE_CONSTANT = 20;
    
    }
    
    
    
    $reflectionClass = new ReflectionClass('MyClass');
    
    $constants = $reflectionClass->getConstants();
    
    
    
    print_r($constants);
    
    


    이 코드를 실행하면, 다음과 같은 결과가 출력됩니다.

    #hostingforum.kr
    php
    
    Array
    
    (
    
        [EXAMPLE_CONSTANT] => 20
    
    )
    
    


    이유는 getConstants 메서드는 상수 필드의 값을 가져올 수 있기 때문입니다.

    따라서, 인스턴스 변수의 값을 상수로 정의한 경우, getConstants 메서드는 이 상수를 가져올 수 없습니다.

    2025-05-18 12:00

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 20,453건 / 8 페이지

검색

게시물 검색