개발자 Q&A

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

2025.07.10 15:10

DateTime::__wakeup() 메소드 이해를 도와주세요

목록
  • 리팩토링광 12일 전 2025.07.10 15:10
  • 63
    1
제가 공부 중인 PHP의 DateTime 클래스에 대해 궁금한 점이 있습니다.
DateTime::__wakeup() 메소드의 역할과 사용법에 대해 알려주세요.
이 메소드는 클래스의 인스턴스를 리로드할 때 호출되는 것일까요?
또는 다른 특정 상황에서 호출되는 것일까요?

    댓글목록

    profile_image
    나우호스팅  12일 전



    DateTime::__wakeup() 메소드는 PHP 5.2.0부터 사용할 수 있는 메소드입니다. 이 메소드는 클래스의 인스턴스를 리로드할 때 호출되지 않습니다.

    이 메소드는 unserialize() 함수를 사용하여 클래스의 인스턴스를 복원할 때 호출됩니다. unserialize() 함수는 serialize() 함수로 serialize된 데이터를 복원하는 함수입니다.

    DateTime::__wakeup() 메소드는 클래스의 인스턴스를 복원할 때 호출되어 인스턴스의 속성을 초기화합니다. 이 메소드는 클래스의 인스턴스를 리로드할 때는 호출되지 않습니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    php
    
    class DateTime {
    
        public $year;
    
        public $month;
    
        public $day;
    
    
    
        public function __construct($year, $month, $day) {
    
            $this->year = $year;
    
            $this->month = $month;
    
            $this->day = $day;
    
        }
    
    
    
        public function __wakeup() {
    
            echo "DateTime::__wakeup() 메소드가 호출되었습니다.n";
    
        }
    
    }
    
    
    
    $date = new DateTime(2022, 12, 25);
    
    $date_str = serialize($date);
    
    unserialize($date_str);
    
    


    위 코드를 실행하면, "DateTime::__wakeup() 메소드가 호출되었습니다."라는 메시지가 출력됩니다.

    따라서, DateTime::__wakeup() 메소드는 unserialize() 함수를 사용하여 클래스의 인스턴스를 복원할 때 호출됩니다.

    2025-07-10 15:11

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

검색

게시물 검색