Weakref::acquire

(PECL weakref >= 0.1.0)

Weakref::acquireСоздает сильную ссылку на текущий объект

Описание

public Weakref::acquire ( ) : bool

Создает из слабой ссылки сильную ссылку на текущий объект, которую будет учитывать сборщик мусора.

Объект 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();

?>

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

Создание сильной ссылки...
  Удаление...
  Создание сильной ссылки...
    Создание сильной ссылки...
    Удаление сильной ссылки...
  Удаление сильной ссылки...
Удаление сильной ссылки...
Уничтожение объекта!

Смотрите также

  • Weakref::release() - Освобождает предыдущую сильную ссылку