# WeakRef クラス

(PECL weakref >= 0.1.0)

## はじめに

WeakRef クラスはオブジェクトへのゲートウェイを提供します。 ガベージコレクタがオブジェクトを解放するのを邪魔しません。 また、弱い参照を強い参照に切り替える方法も用意します。

## クラス概要

WeakRef {
/* メソッド */
public Weakref::__construct ( object `$object` )
public Weakref::acquire ( void ) : bool
public Weakref::get ( void ) : object
public Weakref::release ( void ) : bool
public Weakref::valid ( void ) : bool
}

## 例

例1 WeakRef の使用例

`<?php
class MyClass {
public function __destruct() {
echo "Destroying object!\n";
}
}
$o1 = new MyClass;
$r1 = new WeakRef($o1);
if ($r1->valid()) {
echo "Object still exists!\n";
var_dump($r1->get());
} else {
echo "Object is dead!\n";
}
unset($o1);
if ($r1->valid()) {
echo "Object still exists!\n";
var_dump($r1->get());
} else {
echo "Object is dead!\n";
}
?>`

上の例の出力は以下となります。

    Object still exists!
    object(MyClass)#1 (0) {
    }
    Destroying object!
    Object is dead!

## 目次

- Weakref::acquire — オブジェクトへの強い参照を確保する
- Weakref::__construct — 弱い参照を新しく作る
- Weakref::get — 弱い参照が指す先にオブジェクトを返す
- Weakref::release — 確保した参照を解放する
- Weakref::valid — 参照先のオブジェクトがまだ存在するかどうかを調べる