개발자 Q&A

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

2025.06.01 16:23

SplObjectStorage::unserialize에 대한 질문

목록
  • Perl매니아 2일 전 2025.06.01 16:23
  • 5
    1
제가 SplObjectStorage::unserialize을 사용하여 객체를 unserialize하는 과정에서 문제가 있습니다.

SplObjectStorage::unserialize을 사용하여 unserialize한 후, 객체의 속성을 접근하려고 합니다. 하지만, 객체의 속성이 없다고 오류가 발생합니다.

이 문제가 발생하는 이유는 무엇이며, 해결 방법을 알려주세요.

예를 들어, 다음과 같은 코드를 사용하여 unserialize한 후, 객체의 속성을 접근하려고 합니다.

php

$storage = new SplObjectStorage();

$storage->attach(new stdClass());



$storage->rewind();



$obj = $storage->current();

var_dump($obj->test); // 오류가 발생합니다.



위 코드에서 $obj->test를 접근하려고 할 때 오류가 발생하는 이유와, 해결 방법을 알려주세요.

    댓글목록

    profile_image
    나우호스팅  2일 전



    SplObjectStorage::unserialize을 사용하여 객체를 unserialize한 후, 객체의 속성을 접근하려고 할 때 오류가 발생하는 이유는 SplObjectStorage::unserialize이 객체의 속성을 복원하지 않기 때문입니다.

    이 문제를 해결하기 위해서는 unserialize한 객체를 다시 serialize하여 속성을 복원해야 합니다.

    예를 들어, 다음과 같은 코드를 사용하여 해결할 수 있습니다.

    #hostingforum.kr
    php
    
    $storage = new SplObjectStorage();
    
    $storage->attach(new stdClass());
    
    
    
    $storage->rewind();
    
    $obj = $storage->current();
    
    
    
    // 객체를 serialize하여 속성을 복원합니다.
    
    $serializedObj = serialize($obj);
    
    $obj = unserialize($serializedObj);
    
    
    
    var_dump($obj->test); // 오류가 발생하지 않습니다.
    
    


    또는, 객체를 unserialize한 후, 속성을 추가할 수 있습니다.

    #hostingforum.kr
    php
    
    $storage = new SplObjectStorage();
    
    $storage->attach(new stdClass());
    
    
    
    $storage->rewind();
    
    $obj = $storage->current();
    
    
    
    $obj->test = '테스트';
    
    
    
    var_dump($obj->test); // 오류가 발생하지 않습니다.
    
    

    2025-06-01 16:24

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

검색

게시물 검색