Класс WeakRef
(PECL weakref >= 0.1.0)
Введение
Класс WeakRef предоставляет способ доступа к объекту, не влияя при этом на количество ссылок на него, таким образом сборщик мусора сможет освободить этот объект. Это также дает возможность превратить слабую ссылку в сильную.
Замечание:
Класс WeakRef не следует путать с классом WeakReference.
Обзор классов
WeakRef
{
/* Методы */
}Примеры
Пример #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) { } Уничтожение объекта! Объект уничтожен!
Содержание
- Weakref::acquire — Создает сильную ссылку на текущий объект
- Weakref::__construct — Создает новую слабую ссылку
- Weakref::get — Возвращает объект, на который указывает ссылка
- Weakref::release — Освобождает предыдущую сильную ссылку
- Weakref::valid — Проверяет актуальность ссылки на объект