개발자 Q&A

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

2025.06.23 13:33

ReflectionEnumUnitCase::__construct에 관련하여 질문내용입니다.

목록
  • Android개발광 26일 전 2025.06.23 13:33
  • 20
    1
ReflectionEnumUnitCase::__construct 이해 도움 부탁드립니다.

제가 ReflectionEnumUnitCase 클래스를 사용하여 enum type을 테스트하고 있습니다. 하지만 enum type의 경우 __construct 메소드가 호출되지 않습니다. 이에 따라 ReflectionEnumUnitCase::__construct 메소드가 호출되지 않는 이유를 알고 싶습니다.

또한, enum type의 경우 ReflectionEnumUnitCase::__construct 메소드가 호출되지 않도록 하려면 어떻게 해야 하는지 알려주세요.

제가 작성한 코드는 다음과 같습니다.

php

enum Color: string {

    case RED = 'red';

    case GREEN = 'green';

    case BLUE = 'blue';

}



class ReflectionEnumUnitCase extends TestCase {

    public function testEnum(): void {

        $reflectionClass = new ReflectionClass(Color::class);

        $reflectionProperty = $reflectionClass->getProperty('RED');

        $reflectionProperty->setAccessible(true);

        $enumValue = $reflectionProperty->getValue();

        

        // enumValue의 __construct 메소드가 호출되지 않습니다.

        // ReflectionEnumUnitCase::__construct 메소드가 호출되지 않는 이유를 알고 싶습니다.

    }

}



위 코드의 경우 enum type인 Color의 경우 __construct 메소드가 호출되지 않습니다. 이에 따라 ReflectionEnumUnitCase::__construct 메소드가 호출되지 않는 이유를 알려주세요.

    댓글목록

    profile_image
    나우호스팅  26일 전



    ReflectionEnumUnitCase::__construct 메소드는 PHP 8.1 버전부터 지원되며, enum type의 경우 __construct 메소드가 호출되지 않습니다. 이는 enum type이 PHP 8.1 버전부터 지원되기 때문입니다.

    enum type의 경우 ReflectionEnumUnitCase::__construct 메소드가 호출되지 않도록 하려면, PHP 8.1 버전 이상을 사용해야 합니다.

    PHP 8.1 버전 이상에서 enum type을 사용할 때, ReflectionEnumUnitCase::__construct 메소드가 호출되지 않도록 하려면, enum type의 경우 __construct 메소드를 오버라이딩하여 호출되지 않도록 할 수 있습니다.

    예를 들어, enum type인 Color의 경우 __construct 메소드를 오버라이딩하여 호출되지 않도록 할 수 있습니다.

    #hostingforum.kr
    php
    
    enum Color: string {
    
        case RED = 'red';
    
        case GREEN = 'green';
    
        case BLUE = 'blue';
    
    
    
        public function __construct(string $value) {
    
            // __construct 메소드가 호출되지 않도록 하려면, 아무런 코드도 작성하지 않습니다.
    
        }
    
    }
    
    


    또한, ReflectionEnumUnitCase::__construct 메소드가 호출되지 않도록 하려면, PHP 8.1 버전 이상에서 enum type을 사용할 때, ReflectionEnumUnitCase::__construct 메소드를 오버라이딩하여 호출되지 않도록 할 수 있습니다.

    예를 들어, ReflectionEnumUnitCase::__construct 메소드를 오버라이딩하여 호출되지 않도록 할 수 있습니다.

    #hostingforum.kr
    php
    
    class ReflectionEnumUnitCase extends TestCase {
    
        public function __construct() {
    
            // ReflectionEnumUnitCase::__construct 메소드가 호출되지 않도록 하려면, 아무런 코드도 작성하지 않습니다.
    
        }
    
    
    
        public function testEnum(): void {
    
            $reflectionClass = new ReflectionClass(Color::class);
    
            $reflectionProperty = $reflectionClass->getProperty('RED');
    
            $reflectionProperty->setAccessible(true);
    
            $enumValue = $reflectionProperty->getValue();
    
        }
    
    }
    
    


    이러한 방법으로 ReflectionEnumUnitCase::__construct 메소드가 호출되지 않도록 할 수 있습니다.

    2025-06-23 13:34

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

검색

게시물 검색