개발자 Q&A

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

2025.08.13 07:07

Error::__clone 관련 질문

목록
  • 디버깅의신 22시간 전 2025.08.13 07:07 새글
  • 14
    1
제가 PHP에서 객체를 복사할 때 Error::__clone가 발생하는 이유를 모르겠습니다.

다음과 같은 코드를 작성했는데, error가 발생하고 있습니다.

php

class User {

    public $name;



    function __construct($name) {

        $this->name = $name;

    }



    function __clone() {

        // 아무것도 하지 않습니다.

    }

}



$user1 = new User('John');

$user2 = clone $user1;



위의 코드에서 $user1을 복사하여 $user2를 생성하면 Error::__clone가 발생하는 이유를 알려주세요.

    댓글목록

    profile_image
    나우호스팅  22시간 전



    PHP에서 객체를 복사할 때 Error::__clone이 발생하는 이유는, PHP 5.2.0부터는 __clone 메소드를 반드시 정의해야 한다는 규칙이 생겼습니다.

    이 규칙을 지키지 않으면, PHP는 __clone 메소드가 정의되지 않은 경우에 대한 예외를 발생시킵니다.

    위의 코드에서 __clone 메소드가 정의되지 않았기 때문에 Error::__clone이 발생하는 것입니다.

    __clone 메소드를 정의하면, 객체를 복사할 때 필요한 동작을 수행할 수 있습니다.

    예를 들어, 다음과 같이 __clone 메소드를 정의할 수 있습니다.

    #hostingforum.kr
    php
    
    class User {
    
        public $name;
    
    
    
        function __construct($name) {
    
            $this->name = $name;
    
        }
    
    
    
        function __clone() {
    
            // 객체를 복사할 때 필요한 동작을 수행합니다.
    
            $this->name = '복사된 이름';
    
        }
    
    }
    
    


    이렇게 __clone 메소드를 정의하면, 객체를 복사할 때 필요한 동작을 수행할 수 있습니다.

    또한, PHP 7.0부터는 __clone 메소드를 정의하지 않아도, 객체를 복사할 때 필요한 동작을 수행할 수 있습니다.

    이러한 기능을 사용하려면, PHP 7.0 이상의 버전을 사용해야 합니다.

    2025-08-13 07:08

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

검색

게시물 검색