Weakref::acquire
(PECL weakref >= 0.1.0)
Weakref::acquire — Создает сильную ссылку на текущий объект
Описание
Создает из слабой ссылки сильную ссылку на текущий объект, которую будет учитывать сборщик мусора.
Объект Weakref поддерживает внутренний счетчик для отслеживания внешних ссылок. Если вызов Weakref::acquire() успешен, то счетчик увеличится на один.
Список параметров
У этой функции нет параметров.
Возвращаемые значения
Возвращает true
, если ссылка валидна и можеть быть преобразована в сильную, false
в противном случае.
Примеры
Пример #1 Пример выполнения Weakref::acquire()
<?php
class MyClass {
public function __destruct() {
echo "Уничтожение объекта!\n";
}
}
$o1 = new MyClass;
$r1 = new Weakref($o1);
$r1->acquire();
echo "Удаление o1...\n";
unset($o1);
$o2 = $r1->get();
$r1->release();
echo "Удаление o2...\n";
unset($o2);
?>
Результат выполнения данного примера:
Удаление o1... Удаление o2... Уничтожение объекта!
Пример #2 Пример вложенных вызовов acquire/release
<?php
class MyClass {
public function __destruct() {
echo "Уничтожение объекта!\n";
}
}
$o1 = new MyClass;
$r1 = new Weakref($o1);
echo "Создание сильной ссылки...\n";
$r1->acquire();
echo " Удаление...\n";
unset($o1);
echo " Создание сильной ссылки...\n";
$r1->acquire();
echo " Создание сильной ссылки...\n";
$r1->acquire();
echo " Создание сильной ссылки...\n";
$r1->release();
echo " Удаление сильной ссылки...\n";
$r1->release();
echo "Удаление сильной ссылки...\n";
$r1->release();
?>
Результат выполнения данного примера:
Создание сильной ссылки... Удаление... Создание сильной ссылки... Создание сильной ссылки... Удаление сильной ссылки... Удаление сильной ссылки... Удаление сильной ссылки... Уничтожение объекта!