(PHP 7 >= 7.4.0, PHP 8)
弱い参照により、オブジェクトが破棄されるのを妨げないオブジェクトへの参照を保持することが可能です。
この機能は、キャッシュのようなデータ構造を実装するのに役立ちます。
元のオブジェクトが破棄されている場合、WeakReference::get()
メソッドを呼び出すと null
を返します。
元のオブジェクトは、refcount が 0 になると破棄されます。
弱い参照を作成しても、参照されているオブジェクトの refcount
は増加しません。
WeakReference クラスはシリアライズできません。
例1 基本的な WeakReference クラスの使い方
<?php
$obj = new stdClass;
$weakref = WeakReference::create($obj);
var_dump($weakref->get());
unset($obj);
var_dump($weakref->get());
?>
上の例の出力は、 たとえば以下のようになります。
object(stdClass)#1 (0) { } NULL
バージョン | 説明 |
---|---|
8.4.0 |
WeakReference::__debugInfo() の出力に、
参照されたオブジェクトを含むようになりました。また、参照が有効ではなくなっている場合は、
参照されたオブジェクトは NULL となります。
|