라이브러리

[PHP] SplFixedArray::__wakeup - 직렬화 해제 후 배열을 다시 초기화합니다.




SplFixedArray::__wakeup


PHP 7.2 버전부터 SplFixedArray 클래스가 추가되었으며, 이 클래스는 고정된 크기의 배열을 제공합니다. SplFixedArray 클래스는 PHP의 내장 배열과 유사하지만, 고정된 크기와 더 빠른 성능을 제공합니다.

SplFixedArray 클래스의 __wakeup 메소드는 unserialize() 함수를 사용하여 객체를 복원할 때 호출됩니다. 이 메소드는 객체의 내부 상태를 초기화하고, unserialize() 함수가 객체를 복원할 수 있도록 합니다.

SplFixedArray::__wakeup 메소드의 역할


SplFixedArray::__wakeup 메소드의 역할은 다음과 같습니다.

1. 객체의 내부 상태를 초기화합니다.
2. unserialize() 함수가 객체를 복원할 수 있도록 합니다.

예제


다음 예제는 SplFixedArray::__wakeup 메소드의 역할을 보여줍니다.

#hostingforum.kr
php

class MySplFixedArray extends SplFixedArray {

    public function __wakeup() {

        echo "SplFixedArray::__wakeup 호출됨
";

        parent::__wakeup();

    }

}



$obj = new MySplFixedArray(5);

$obj[0] = 10;

$obj[1] = 20;

$obj[2] = 30;

$obj[3] = 40;

$obj[4] = 50;



$serialized = serialize($obj);



echo "Serialized: $serialized
";



$obj = unserialize($serialized);



echo "Unserialized: ";

var_dump($obj);



이 예제에서, MySplFixedArray 클래스는 SplFixedArray 클래스를 상속받습니다. MySplFixedArray 클래스의 __wakeup 메소드는 SplFixedArray::__wakeup 메소드를 호출하고, "SplFixedArray::__wakeup 호출됨" 메시지를 출력합니다.

객체를 serialize() 함수를 사용하여 문자열로 변환하고, unserialize() 함수를 사용하여 문자열을 객체로 복원합니다. 이 때, MySplFixedArray::__wakeup 메소드가 호출됩니다.

결과


출력 결과는 다음과 같습니다.

#hostingforum.kr


Serialized: C:8:"MySplFixedArray":5:{a:5:{i:0;i:10;i:1;i:20;i:2;i:30;i:3;i:40;i:4;i:50;}}

Unserialized: object(MySplFixedArray)#1 (5) { [0]=> int(10) [1]=> int(20) [2]=> int(30) [3]=> int(40) [4]=> int(50) }



이 예제에서, MySplFixedArray::__wakeup 메소드가 호출되었으며, 객체의 내부 상태가 초기화되었습니다. unserialize() 함수가 객체를 복원할 수 있도록 하였습니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 8,985건 / 140 페이지

검색

게시물 검색