Les références faibles fournissent une façon non-intrusive de gérer les objets éphémères. Contrairement aux références normales (fortes), les références faibles n'alertent pas le gestionnaire de la libération de l'objet. Pour cette raison, un objet peut être détruit même si une référence faible vers cet objet existe toujours. Dans de telles conditions, la référence faible devient invalide de façon transparente.
Exemple #1 Exemple d'utilisation de Weakref
<?php
class MyClass {
public function __destruct() {
echo "Destruction de l'objet !\n";
}
}
$o1 = new MyClass;
$r1 = new Weakref($o1);
if ($r1->valid()) {
echo "L'objet existe toujours !\n";
var_dump($r1->get());
} else {
echo "L'objet est mort !\n";
}
unset($o1);
if ($r1->valid()) {
echo "L'objet existe toujours !\n";
var_dump($r1->get());
} else {
echo "L'objet est mort !\n";
}
?>
L'exemple ci-dessus va afficher :
L'objet existe toujours ! object(MyClass)#1 (0) { } L'objet est mort ! Object is dead!