(PECL weakref >= 0.1.0)
Weakref::acquire — Adquiere una referencia fuerte de un objeto
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.
Esta función no tiene parámetros.
Devuelve TRUE
si la referencia era válida y pudo ser convertida a una referencia
fuerte, de lo contrario FALSE
.
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!