개발자 Q&A

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

2025.06.07 02:22

ReflectionExtension::__clone 메서드 이해를 부탁드립니다.

목록
  • Scala마법사 오래 전 2025.06.07 02:22 인기
  • 271
    1
제가 ReflectionExtension::__clone 메서드를 공부하다가 이해가 가지 않는데요.
어떻게 작동하는지 정확히 알고 싶습니다.
__clone 메서드는 어떤 상황에서 호출되는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  오래 전



    __clone 메서드는 PHP의 객체 복제에 사용됩니다. 객체 복제란, 동일한 클래스의 객체를 생성하여 원본 객체의 속성과 값을 복사하는 것을 의미합니다.

    __clone 메서드는 객체가 복제될 때 호출됩니다. 예를 들어, 객체를 배열에 추가하거나, 객체를 다른 변수에 할당할 때 호출됩니다.

    #hostingforum.kr
    php
    
    class MyClass {
    
        public $name;
    
    
    
        public function __clone() {
    
            echo "객체가 복제되었습니다.n";
    
        }
    
    }
    
    
    
    $obj = new MyClass();
    
    $obj->name = "John";
    
    
    
    $clone_obj = clone $obj;
    
    


    위 코드에서, `$obj` 객체를 `$clone_obj` 변수에 할당할 때, `__clone` 메서드가 호출됩니다. 이 때, "객체가 복제되었습니다."라는 메시지가 출력됩니다.

    __clone 메서드는 객체의 속성을 복사할 때 사용할 수 있습니다. 예를 들어, 객체의 속성이 객체 자체를 참조하는 경우, 복제된 객체가 원본 객체를 참조하는 것을 방지하기 위해 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    class MyClass {
    
        public $name;
    
        public $self;
    
    
    
        public function __construct() {
    
            $this->self = $this;
    
        }
    
    
    
        public function __clone() {
    
            $this->self = $this;
    
        }
    
    }
    
    
    
    $obj = new MyClass();
    
    $obj->name = "John";
    
    
    
    $clone_obj = clone $obj;
    
    


    위 코드에서, `$obj` 객체의 `$self` 속성이 `$obj` 객체를 참조합니다. 이 때, `$obj` 객체를 복제할 때, `__clone` 메서드가 호출되고 `$self` 속성이 `$clone_obj` 객체를 참조하도록 설정됩니다.

    2025-06-07 02:23

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

검색

게시물 검색