Введение

Слабые ссылки предоставляют простой инструмент для доступа к временным объектам. В отличие от обычной (сильной) ссылки, слабые ссылки не препятствуют сборщику мусора освободить этот объект. По этой причине объект может быть удален, несмотря на то, что слабая ссылка на него все еще существует. В этом случае такая ссылка становится недействительной.

Пример #1 Weakref пример использования

<?php
class MyClass {
    public function 
__destruct() {
        echo 
"Уничтожение объекта!\n";
    }
}

$o1 = new MyClass;

$r1 = new Weakref($o1);

if (
$r1->valid()) {
    echo 
"Объект все еще существует!\n";
    
var_dump($r1->get());
} else {
    echo 
"Объект уничтожен!\n";
}

unset(
$o1);

if (
$r1->valid()) {
    echo 
"Объект все еще существует!\n";
    
var_dump($r1->get());
} else {
    echo 
"Объект уничтожен!\n";
}
?>

Результат выполнения данного примера:

Объект все еще существует!
object(MyClass)#1 (0) {
}
Уничтожение объекта!
Объект уничтожен!