Start · Sprachen · PHP · Referenz · MongoDB\BSON\DBPointer

MongoDB\BSON\DBPointer

Klasse

Repräsentiert den veralteten BSON-Typ <code>DBPointer</code>, der in modernen MongoDB-Versionen nicht mehr verwendet werden sollte.

seit PHP 1.4.0 Kategorie: db

Signatur

final class MongoDB\BSON\DBPointer implements MongoDB\BSON\Type, Serializable, JsonSerializable, Stringable

Beschreibung

MongoDB\BSON\DBPointer bildet den veralteten BSON-Typ DBPointer (Typ-Code 0x0C) ab, der in frühen MongoDB-Versionen verwendet wurde, um Referenzen auf andere Dokumente zu speichern. Der Typ wurde offiziell als veraltet (deprecated) markiert und sollte in neuen Anwendungen nicht mehr verwendet werden. Stattdessen sind manuelle Referenzen (z. B. Speichern einer ObjectId) oder das DBRef-Format zu bevorzugen.

Die Klasse dient in erster Linie dazu, Legacy-Daten aus älteren MongoDB-Datenbanken zu lesen, zu deserialisieren und weiterzuverarbeiten, ohne dabei Datenverlust zu riskieren. Sie ist als final deklariert, kann also nicht erweitert werden. Instanzen können nicht manuell erzeugt werden – sie entstehen ausschließlich beim Deserialisieren von BSON-Dokumenten, die einen DBPointer-Wert enthalten.

Die Klasse implementiert Serializable für PHP-Serialisierung, JsonSerializable für die JSON-Ausgabe sowie Stringable, sodass eine Instanz in einen lesbaren String umgewandelt werden kann. Alle diese Methoden sind für interne Zwecke vorgesehen; eine direkte Nutzung der Konstruktoren oder Methoden durch Anwendungscode ist nicht vorgesehen.

Beispiele

DBPointer aus BSON-Daten lesen und anzeigen

<?php
// Szenario: Ein Legacy-Dokument aus MongoDB enthält einen DBPointer.
// Der Treiber deserialisiert ihn automatisch als DBPointer-Objekt.

use MongoDB\BSON\DBPointer;

// Beispiel: Manuelles Erzeugen via BSON-Deserialisierung (nur zur Demonstration)
$bson = MongoDB\BSON\fromJSON('{"ref": {"$dbPointer": {"$ref": "collection", "$id": {"$oid": "507f1f77bcf86cd799439011"}}}}');
$document = MongoDB\BSON\toPHP($bson);

$dbPointer = $document->ref;

if ($dbPointer instanceof DBPointer) {
    echo "Typ: DBPointer\n";
    echo "String-Darstellung: " . (string) $dbPointer . "\n";
} else {
    echo "Kein DBPointer gefunden.\n";
}
Typ: DBPointer String-Darstellung: collection 507f1f77bcf86cd799439011

JSON-Serialisierung eines DBPointer-Objekts

<?php
// Deserialisiertes BSON-Dokument mit DBPointer in JSON umwandeln

use MongoDB\BSON\DBPointer;

$bson = MongoDB\BSON\fromJSON('{"legacy": {"$dbPointer": {"$ref": "users", "$id": {"$oid": "507f191e810c19729de860ea"}}}}');
$document = MongoDB\BSON\toPHP($bson);

$dbPointer = $document->legacy;

if ($dbPointer instanceof DBPointer) {
    $json = json_encode($dbPointer, JSON_PRETTY_PRINT);
    echo $json . "\n";
}
{ "$dbPointer": { "$ref": "users", "$id": { "$oid": "507f191e810c19729de860ea" } } }

// Wichtig · Fallstricke

Veraltet: Der BSON-Typ DBPointer ist offiziell als deprecated markiert. Er sollte in neuen Projekten nicht verwendet werden. Für Referenzen auf andere Dokumente empfiehlt MongoDB, die ObjectId des Zieldokuments direkt zu speichern oder das DBRef-Format zu nutzen.

Keine manuelle Instanziierung: Die Klasse ist final und besitzt keinen öffentlichen Konstruktor. Instanzen entstehen ausschließlich durch die automatische BSON-Deserialisierung des MongoDB-Treibers.

Kompatibilität: Die Klasse steht nur zur Verfügung, wenn die PHP-Erweiterung mongodb (PECL) ab Version 1.4.0 installiert ist. Sie ist nicht Teil des veralteten mongo-Treibers.