W3cubDocs

/PHP

The WeakRef class

Introduction

(PECL weakref >= 0.1.0)

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 ( ) : bool
public Weakref::get ( ) : object
public Weakref::release ( ) : bool
public Weakref::valid ( ) : 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

© 1997–2020 The PHP Documentation Group
Licensed under the Creative Commons Attribution License v3.0 or later.
https://www.php.net/manual/en/class.weakref.php