개발자 Q&A

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

2025.06.22 01:57

MongoDBBSONUTCDateTime::jsonSerialize 관련 질문입니다.

목록
  • UX개발자 1일 전 2025.06.22 01:57
  • 2
    1
제가 MongoDBBSONUTCDateTime 클래스의 jsonSerialize 메서드를 사용하여 UTC 시간을 JSON 포맷으로 serialize할 때, 다음과 같은 오류가 발생합니다.

오류 메시지:
"Cannot access protected property MongoDB\BSON\UTCDateTime::$date"

오류가 발생하는 코드:

php

use MongoDBBSONUTCDateTime;



$date = new UTCDateTime();

$json = $date->jsonSerialize();



오류를 발생시키는 코드를 수정하여 UTC 시간을 JSON 포맷으로 serialize할 수 있는 방법을 알려주세요.

    댓글목록

    profile_image
    나우호스팅  1일 전



    MongoDBBSONUTCDateTime 클래스의 jsonSerialize 메서드를 사용하여 UTC 시간을 JSON 포맷으로 serialize할 때 오류가 발생하는 이유는 protected 프로퍼티인 $date를 접근하려고 때문입니다.

    protected 프로퍼티는 외부에서 직접 접근할 수 없으므로, jsonSerialize 메서드에서 접근할 수 있도록 하기 위해 __get() 메서드를 오버라이드하여 접근할 수 있도록 해야 합니다.

    다음은 오류를 발생시키는 코드를 수정하여 UTC 시간을 JSON 포맷으로 serialize할 수 있는 방법입니다.

    #hostingforum.kr
    php
    
    use MongoDBBSONUTCDateTime;
    
    
    
    class UTCDateTimeSerialize extends UTCDateTime
    
    {
    
        public function jsonSerialize()
    
        {
    
            return [
    
                'date' => $this->__get('date'),
    
                'milliseconds' => $this->__get('milliseconds'),
    
                'timezone' => $this->__get('timezone'),
    
            ];
    
        }
    
    }
    
    
    
    $date = new UTCDateTimeSerialize();
    
    $json = $date->jsonSerialize();
    
    print_r($json);
    
    


    위 코드에서 UTCDateTimeSerialize 클래스를 만들고 jsonSerialize 메서드를 오버라이드하여 protected 프로퍼티를 접근할 수 있도록 합니다.

    이러한 방법으로 UTC 시간을 JSON 포맷으로 serialize할 수 있습니다.

    2025-06-22 01:58

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

검색

게시물 검색