php8.0 弱いマップを使用する

php8.0 弱いマップを使用する

php8.0では、弱いマップを使用することができるようになったので、そのサンプルコードを記述してます。

環境

  • OS  CentOS Linux release 8.0.1905 (Core)
  • php 8.0.0

弱いマップを使用(Weak Maps)

php7では以下のコードは、エラー「PHP Fatal error: Uncaught Error: Class ‘WeakMap’ not found in」となりますが、

<?php

$map = new WeakMap;

$obj = new stdClass;

$map[$obj] = 10;

var_dump($map);

unset($obj);

var_dump($map);

php8では、以下の結果を得ることが可能になりました。

<?php

$map = new WeakMap;

$obj = new stdClass;

$map[$obj] = 10;

var_dump($map);

// class WeakMap#1 (1) {
//     public ${0} =>
//     array(2) {
//       'key' =>
//       class stdClass#2 (0) {
//       }
//       'value' =>
//       int(10)
//     }
//   }

// 解除
unset($obj);

var_dump($map);

// class WeakMap#1 (0) {
// }