オブジェクトへの強い参照を確保する

# Weakref::acquire

(PECL weakref >= 0.1.0)

Weakref::acquire — オブジェクトへの強い参照を確保する

### 説明

public Weakref::acquire ( void ) : bool

オブジェクトへの強い参照を確保し、事実上、弱い参照を強い参照に切り替えます。

Weakref は内部的な確保カウンタを管理して、 未処理の強い参照を追跡します。 Weakref::acquire() の呼び出しが成功すると、このカウンタがひとつ加算されます。

### パラメータ

この関数にはパラメータはありません。

### 返り値

その参照が有効で、かつ強い参照に切り替えられた場合に `TRUE`、 それ以外の場合に `FALSE` を返します。

### 例

例1 Weakref::acquire() の例

`<?php
class MyClass {
public function __destruct() {
echo "Destroying object!\n";
}
}
$o1 = new MyClass;
$r1 = new Weakref($o1);
$r1->acquire();
echo "Unsetting o1...\n";
unset($o1);
$o2 = $r1->get();
$r1->release();
echo "Unsetting o2...\n";
unset($o2);
?>`

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

    Unsetting o1...
    Unsetting o2...
    Destroying object!

例2 ネストした確保と解放の例

`<?php
class MyClass {
public function __destruct() {
echo "Destroying object!\n";
}
}
$o1 = new MyClass;
$r1 = new Weakref($o1);
echo "Acquiring...\n";
$r1->acquire();
echo " Unsetting...\n";
unset($o1);
echo " Acquiring...\n";
$r1->acquire();
echo " Acquiring...\n";
$r1->acquire();
echo " Releasing...\n";
$r1->release();
echo " Releasing...\n";
$r1->release();
echo "Releasing...\n";
$r1->release();
?>`

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

    Acquiring...
      Unsetting...
      Acquiring...
        Acquiring...
        Releasing...
      Releasing...
    Releasing...
    Destroying object!

### 参考

- Weakref::release() - 確保した参照を解放する