The WeakRef class

(PECL weakref >= 0.1.0)

Введение

Класс WeakRef предоставлят способ доступа к объекту не влияя при этом на количество ссылок на него, таким образом сборщик мусора не будет учитывать такой доступ. Также этот класс может переключить слабую ссылку на обычную, которая будет учитываться сборщиком.

Обзор классов

WeakRef {
/* Методы */
public Weakref::__construct ( object $object )
public bool Weakref::acquire ( void )
public object Weakref::get ( void )
public bool Weakref::release ( void )
public bool Weakref::valid ( void )
}

Примеры

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

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

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

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

Содержание

  • Weakref::acquire — Создает строгую ссылку на текущий объект
  • Weakref::__construct — Создает новую слабую ссылку
  • Weakref::get — Вовзращает объект, на который указывает ссылка
  • Weakref::release — Освобождает предыдущую строгую ссылку
  • Weakref::valid — Проверяет актуальность ссылки на объект