# The WeakRef class

(PECL weakref >= 0.1.0)

## Introduction

The WeakRef class provides a gateway to objects without preventing the garbage collector from freeing those objects. It also provides a way to turn a weak reference into a strong one.

> Note:

> The class WeakRef is not to be confused with the class WeakReference.

## Class synopsis

WeakRef {
/* Methods */
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
}

## Examples

Example #1 WeakRef usage example

`<?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";
}
?>`

The above example will output:

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

## Table of Contents

- Weakref::acquire — Acquires a strong reference on that object
- Weakref::__construct — Constructs a new weak reference
- Weakref::get — Returns the object pointed to by the weak reference
- Weakref::release — Releases a previously acquired reference
- Weakref::valid — Checks whether the object referenced still exists