# WeakReference クラス

(PHP 7 >= 7.4.0, PHP 8)

## はじめに

弱い参照により、オブジェクトが破棄されるのを妨げないオブジェクトへの参照を保持することが可能です。 この機能は、キャッシュのようなデータ構造を実装するのに役立ちます。 元のオブジェクトが破棄されている場合、WeakReference::get() メソッドを呼び出すと `null` を返します。 元のオブジェクトは、refcount が 0 になると破棄されます。 弱い参照を作成しても、参照されているオブジェクトの `refcount` は増加しません。

WeakReference クラスはシリアライズできません。

## クラス概要

final class WeakReference {
/* メソッド */
public function __construct()
public static function create(object `$object`): WeakReference
public function get(): ?object
}

## 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` となります。

## 目次

- WeakReference::__construct — コンストラクタを使ってインスタンス化はできません
- WeakReference::create — 弱い参照を生成する
- WeakReference::get — 弱く参照されたオブジェクトを取得する

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open