개발자 Q&A

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

2025.07.02 06:14

GMP::__serialize 관련 질문

목록
  • GCP전문가 16일 전 2025.07.02 06:14
  • 19
    1
제가 공부하고 있는 GMP 라이브러리에서 __serialize 메서드를 사용하여 객체를 serialize 할 때, 어떤 문제가 발생했는지 알 수 있을까요?

제가 serialize 한 객체는 전역 변수를 사용하고 있으므로, serialize 할 때 문제가 발생합니다. GMP 라이브러리에서 __serialize 메서드가 전역 변수를 serialize 할 때 어떻게 동작하는지 알고 싶습니다.

예를 들어, 전역 변수 $a를 선언하고 serialize 한 후, deserialize 할 때 전역 변수 $a가 제대로 동작하는지 확인하고 싶습니다.

다음은 예시 코드입니다.

php

$a = '전역 변수';



class Test {

    public function __serialize() {

        return array('전역 변수' => $GLOBALS['a']);

    }



    public function __unserialize(array $data) {

        $this->전역변수 = $data['전역 변수'];

    }

}



$obj = new Test();

$serialized = serialize($obj);



$obj2 = unserialize($serialized);



echo $obj2->전역변수; // 전역 변수가 제대로 동작하는지 확인



위 코드에서 전역 변수 $a가 제대로 동작하는지 확인하고 싶습니다.

    댓글목록

    profile_image
    나우호스팅  16일 전



    GMP 라이브러리에서 __serialize 메서드를 사용하여 객체를 serialize 할 때, 전역 변수를 serialize 할 때 문제가 발생하는 이유는 serialize 함수가 전역 변수를 serialize 할 때, 전역 변수의 현재 값만 serialize 한다는 것입니다.

    예를 들어, 전역 변수 $a를 선언하고 serialize 한 후, deserialize 할 때 전역 변수 $a가 제대로 동작하는지 확인하고 싶습니다.

    #hostingforum.kr
    php
    
    $a = '전역 변수';
    
    class Test {
    
        public function __serialize() {
    
            return array('전역 변수' => $GLOBALS['a']);
    
        }
    
    
    
        public function __unserialize(array $data) {
    
            $this->전역변수 = $data['전역 변수'];
    
        }
    
    }
    
    
    
    $obj = new Test();
    
    $serialized = serialize($obj);
    
    
    
    $obj2 = unserialize($serialized);
    
    
    
    echo $obj2->전역변수; // 전역 변수가 제대로 동작하는지 확인
    
    


    위 코드에서 전역 변수 $a는 serialize 할 때, 현재 값인 '전역 변수'만 serialize 됩니다. deserialize 할 때, 전역 변수 $a는 이전 값인 '전역 변수'가 아닌 현재 값인 '전역 변수'로 동작합니다.

    따라서, GMP 라이브러리에서 __serialize 메서드를 사용하여 객체를 serialize 할 때, 전역 변수를 serialize 할 때 문제가 발생하는 이유는 serialize 함수가 전역 변수의 현재 값만 serialize 한다는 것입니다.

    이 문제를 해결하기 위해서는, serialize 할 때 전역 변수의 값을 저장하고, deserialize 할 때 저장된 값을 사용하는 방법이 있습니다.

    #hostingforum.kr
    php
    
    $a = '전역 변수';
    
    class Test {
    
        public $전역변수;
    
    
    
        public function __serialize() {
    
            return array('전역 변수' => $this->전역변수);
    
        }
    
    
    
        public function __unserialize(array $data) {
    
            $this->전역변수 = $data['전역 변수'];
    
        }
    
    }
    
    
    
    $obj = new Test();
    
    $obj->전역변수 = $GLOBALS['a'];
    
    $serialized = serialize($obj);
    
    
    
    $obj2 = unserialize($serialized);
    
    
    
    echo $obj2->전역변수; // 전역 변수가 제대로 동작하는지 확인
    
    


    위 코드에서, serialize 할 때 전역 변수의 값을 저장하고, deserialize 할 때 저장된 값을 사용합니다. 따라서, 전역 변수 $a는 제대로 동작합니다.

    2025-07-02 06:15

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

검색

게시물 검색