개발자 Q&A

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

2025.07.16 10:36

ReflectionAttribute::__construct 관련 질문

목록
  • 앵귤러도사 12시간 전 2025.07.16 10:36 새글
  • 6
    1
제가 ReflectionAttribute::__construct 메서드를 사용하여 Attribute 클래스를 생성하였으나, Attribute 클래스에 인자를 받을 수 없는 상황을 만나게 되었습니다.

Attribute 클래스의 생성자에서 인자를 받을 수 없는 이유가 무엇이며, 어떻게 Attribute 클래스에 인자를 받을 수 있도록 수정할 수 있는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  12시간 전



    ReflectionAttribute::__construct 메서드는 Attribute 클래스를 생성할 때 사용됩니다. 그러나 Attribute 클래스의 생성자에서 인자를 받을 수 없는 이유는 PHP 8.0 버전부터 Attribute 클래스는 final 클래스로 선언되어 있기 때문입니다.

    final 클래스는 상속이 불가능하고, 생성자도 오버라이딩이 불가능합니다. 따라서 Attribute 클래스의 생성자는 인자를 받을 수 없습니다.

    Attribute 클래스에 인자를 받을 수 있도록 수정하려면 Attribute 클래스를 상속받은 새로운 클래스를 생성하고, 그 클래스의 생성자를 오버라이딩하여 인자를 받을 수 있도록 수정할 수 있습니다.

    예를 들어, 다음과 같이 Attribute 클래스를 상속받은 새로운 클래스인 CustomAttribute 클래스를 생성할 수 있습니다.

    #hostingforum.kr
    php
    
    use Attribute;
    
    
    
    final class CustomAttribute extends Attribute
    
    {
    
        public function __construct(private string $value)
    
        {
    
            // 인자를 받을 수 있도록 수정
    
        }
    
    }
    
    


    이러한 방법으로 Attribute 클래스에 인자를 받을 수 있도록 수정할 수 있습니다.

    2025-07-16 10:37

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

검색

게시물 검색