Signatur
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";
}
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";
}
// 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.