라이브러리

[PHP] WeakMap::offsetSet - 새로운 키-값 쌍으로 맵을 업데이트합니다.




WeakMap::offsetSet

PHP 7.4 버전부터 WeakMap 클래스가 추가되었습니다. WeakMap은 키와 값이 모두 객체인 맵을 나타내는 클래스입니다. WeakMap의 특징은 키가 가비지 컬렉션 대상이 되는 것을 허용하여 메모리 관리를 용이하게 한다는 것입니다.

WeakMap::offsetSet 메소드는 키와 값을 WeakMap에 추가하는 메소드입니다. 이 메소드는 키가 이미 존재하는 경우 기존 값을 갱신하고, 키가 존재하지 않는 경우 새로운 값을 추가합니다.

예제


#hostingforum.kr
php

class Person {

    public $name;



    function __construct($name) {

        $this->name = $name;

    }

}



$weakMap = new WeakMap();



// 키와 값을 추가합니다.

$person1 = new Person('John');

$weakMap->offsetSet($person1, 'value1');



// 키가 이미 존재하는 경우 기존 값을 갱신합니다.

$person2 = $person1;

$weakMap->offsetSet($person2, 'value2');



// 키가 존재하지 않는 경우 새로운 값을 추가합니다.

$person3 = new Person('Jane');

$weakMap->offsetSet($person3, 'value3');



// 키가 존재하지 않으면 null을 반환합니다.

$person4 = new Person('Jim');

var_dump($weakMap->offsetGet($person4)); // null



// 키가 존재하면 값을 반환합니다.

var_dump($weakMap->offsetGet($person1)); // string(5) "value2"



// 키가 존재하지 않으면 null을 반환합니다.

unset($person1);

var_dump($weakMap->offsetGet($person1)); // null



WeakMap의 특징


WeakMap의 키는 가비지 컬렉션 대상이 됩니다. 즉, 키가 참조되지 않으면 메모리에서 자동으로 해제됩니다. 이 특징은 메모리 관리를 용이하게 합니다.

예제: WeakMap의 가비지 컬렉션


#hostingforum.kr
php

class Person {

    public $name;



    function __construct($name) {

        $this->name = $name;

    }

}



$weakMap = new WeakMap();



$person1 = new Person('John');

$weakMap->offsetSet($person1, 'value1');



// 키가 참조되지 않으면 메모리에서 해제됩니다.

unset($person1);



// 키가 존재하지 않으면 null을 반환합니다.

var_dump($weakMap->offsetGet($person1)); // null



결론


WeakMap::offsetSet 메소드는 키와 값을 WeakMap에 추가하는 메소드입니다. 이 메소드는 키가 이미 존재하는 경우 기존 값을 갱신하고, 키가 존재하지 않는 경우 새로운 값을 추가합니다. WeakMap의 키는 가비지 컬렉션 대상이 됩니다. 이 특징은 메모리 관리를 용이하게 합니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

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

검색

게시물 검색