2024-05-06 20:40:05 +00:00
|
|
|
---
|
2024-10-30 17:34:11 +00:00
|
|
|
date: 2020-11-10
|
2024-05-06 20:40:05 +00:00
|
|
|
id: 954a4b48-f3a5-4ef6-a2ea-93f843250c68
|
|
|
|
title: PHP Weap Maps
|
|
|
|
---
|
|
|
|
|
|
|
|
# Description
|
|
|
|
|
|
|
|
Weak maps[^1] allow creating a map from objects to arbitrary values
|
|
|
|
(similar to SplObjectStorage) without preventing the objects that are
|
|
|
|
used as keys from being garbage collected. If an object key is garbage
|
|
|
|
collected, it will simply be removed from the map. This will save a lot
|
|
|
|
of headaches for people writing things like ORMs.
|
|
|
|
|
|
|
|
# Syntax
|
|
|
|
|
|
|
|
``` php
|
|
|
|
class Foo
|
|
|
|
{
|
|
|
|
private WeakMap $cache;
|
|
|
|
|
|
|
|
public function getSomethingWithCaching(object $obj): object
|
|
|
|
{
|
|
|
|
return $this->cache[$obj]
|
|
|
|
??= $this->computeSomethingExpensive($obj);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
# Related
|
|
|
|
|
|
|
|
- [PHP](20201109133720-php)
|
|
|
|
- [PHP 8.0](20201109133834-php_8_0)
|
|
|
|
|
|
|
|
# Footnotes
|
|
|
|
|
|
|
|
[^1]: <https://wiki.php.net/rfc/weak_maps>
|