La classe WeakReference

(PHP 7 >= 7.4.0, PHP 8)

Introduction

Les références faibles permettent au programmeur de conserver une référence à un objet sans en empêcher sa destruction. Ils sont utiles pour implémenter des structures tel que des caches.

Les WeakReferences ne peuvent pas être sérialisées.

Synopsis de la classe

WeakReference {
/* Méthodes */
public __construct()
public static create(object $object): WeakReference
public get(): object|null
}

Exemple avec WeakReference

Exemple #1 Utilisation Simple de WeakReference

<?php
$obj = new stdClass;
$weakref = WeakReference::create($obj);
var_dump($weakref->get());
unset($obj);
var_dump($weakref->get());
?>

Résultat de l'exemple ci-dessus est similaire à :

object(stdClass)#1 (0) {
}
NULL

Sommaire

add a note add a note

User Contributed Notes 1 note

up
-26
Sandor Toth
4 years ago
You might consider to use WeakReference in your Container class. Don't forget to create the object into a variable and pass the variable to WeakReference::create() otherwise you going to ->get() null.

Consider as wrong solution, which returns null
<?php
/**
* @return App
*/
public static function app() : App
{
    if (!static::
$app) {
       static::
$app = WeakReference::create(new App());
    }

    return static::
$app->get();
}
?>

Consider as GOOD solution, which returns App instance
<?php
/**
* @return App
*/
public static function app() : App
{
    if (!static::
$app) {
      
$app = new App();
       static::
$app = WeakReference::create($app);
    }

    return static::
$app->get();
}
?>
To Top