PHP 8.4.3 Released!

WeakReference クラス

(PHP 7 >= 7.4.0, PHP 8)

はじめに

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

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

クラス概要

final class WeakReference {
/* メソッド */
public __construct()
public static create(object $object): WeakReference
public 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 となります。

目次

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top