Прочитал
PHP 8 RFC: Weak References, и возможно, не совсем понял проблему, и решение из rfc.
Насколько понял, часто бывает необходимо закешировать работу какого-то метода.
Например:
class OrderItem {
private $cahceData = [];
public function export(int $orderId): array {
if (isset($this->cahceData[$orderId])) {
return $this->cahceData[$orderId];
}
// ... fill $data
return ($this->cahceData[$orderId] = $data);
}
}
Проблема в том, что объект класса
OrderItem не будет удален сборщиком мусора, т.к. содержит в себе состояние - $cacheData ?
А решение из rfc делает тоже самое, только глобально, чтобы не держать состояние кеша в самом объекте ? или что ?