Weakref::acquire

(PECL weakref >= 0.1.0)

Weakref::acquireAdquiere una referencia fuerte de un objeto

Descripción

public Weakref::acquire ( void ) : bool

Adquiere una referencia fuerte de un objeto, convirtiendo virtualmente la referencia débil en una fuerte.

La instancia de Weakref guarda un contador de adquiridas interno para el seguimiento de referencias fuertes pendientes. Si la llamada a Weakref::acquire() tiene éxito, este contador se incrementará en uno.

Parámetros

Esta función no tiene parámetros.

Valores devueltos

Devuelve TRUE si la referencia era válida y pudo ser convertida a una referencia fuerte, de lo contrario FALSE.

Ejemplos

Ejemplo #1 Ejemplo de Weakref::acquire()

<?php
class MiClase {
    public function 
__destruct() {
        echo 
"¡Destruyendo el objeto!\n";
    }
}

$o1 = new MiClase;

$r1 = new Weakref($o1);

$r1->acquire();

echo 
"Destruyendo o1...\n";
unset(
$o1);

$o2 $r1->get();

$r1->release();

echo 
"Destruyendo o2...\n";
unset(
$o2);
?>

El resultado del ejemplo sería:

Destruyendo  o1...
Destruyendo  o2...
¡Destruyendo el objeto!

Ejemplo #2 Ejemplo de acquire/release anidados

<?php
class MiClase {
    public function 
__destruct() {
        echo 
"¡Destruyendo el objeto!\n";
    }
}

$o1 = new MiClase;

$r1 = new Weakref($o1);

echo 
"Adquiriendo...\n";
$r1->acquire();

echo 
"  Destruyendo...\n";
unset(
$o1);

echo 
"  Adquiriendo...\n";
$r1->acquire();

echo 
"    Adquiriendo...\n";
$r1->acquire();

echo 
"    Liberando...\n";
$r1->release();

echo 
"  Liberando...\n";
$r1->release();

echo 
"Liberando...\n";
$r1->release();

?>

El resultado del ejemplo sería:

Adquiriendo...
  Destruyendo...
  Adquiriendo...
    Adquiriendo...
    Liberando...
  Liberando...
Liberando...
¡Destruyendo el objeto!

Ver también