PHP Velho Oeste 2024

Die Klasse WeakReference

(PHP 7 >= 7.4.0, PHP 8)

Einführung

Schwache Referenzen erlauben es dem Programmierer, eine Referenz auf ein Objekt zu behalten, die nicht verhindert, dass das Objekt zerstört wird. Sie sind nützlich für die Implementierung von Cache-ähnlichen Strukturen.

WeakReferences können nicht serialisiert werden.

Klassenbeschreibung

final class WeakReference {
/* Methoden */
public __construct()
public static create(object $object): WeakReference
public get(): ?object
}

WeakReference-Beispiele

Beispiel #1 Grundlegende Verwendung von WeakReference

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

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

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

Inhaltsverzeichnis

add a note add a note

User Contributed Notes 1 note

up
-42
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