Signatur
Beschreibung
MongoDB\BSON\MaxKeyInterface ist ein Marker-Interface aus der MongoDB PHP-Extension (ext-mongodb), das Klassen kennzeichnet, welche den speziellen BSON-Datentyp MaxKey abbilden. Ein MaxKey-Wert ist in der BSON-Spezifikation definiert und wird beim Vergleich immer als größer als jeder andere mögliche BSON-Wert behandelt.
Das Interface selbst definiert keine Methoden und dient ausschließlich als Typenmarkierung (Marker Interface). Dadurch können typsichere Prüfungen mit instanceof durchgeführt werden, ohne an eine konkrete Implementierungsklasse wie MongoDB\BSON\MaxKey gebunden zu sein.
Typische Einsatzgebiete für MaxKey sind bereichsbasierte Shard-Keys in MongoDB, bei denen ein Dokument explizit dem letzten möglichen Bereich zugeordnet werden soll, oder auch das Filtern von Dokumenten mit einem Feldwert, der garantiert größer als alle realen Werte ist.
- Implementiert von der konkreten Klasse
MongoDB\BSON\MaxKey. - Das Gegenstück für den kleinsten möglichen BSON-Wert ist
MongoDB\BSON\MinKeyInterface. - Beim Serialisieren nach BSON wird ein Objekt, das dieses Interface implementiert, automatisch als BSON-MaxKey kodiert.
Beispiele
Prüfung auf MaxKeyInterface mit instanceof
<?php
use MongoDB\BSON\MaxKey;
use MongoDB\BSON\MaxKeyInterface;
$maxKey = new MaxKey();
if ($maxKey instanceof MaxKeyInterface) {
echo "Das Objekt repräsentiert einen BSON-MaxKey-Wert." . PHP_EOL;
}
// Typsichere Funktion, die jede MaxKey-Implementierung akzeptiert
function handleMaxKey(MaxKeyInterface $key): void {
echo "MaxKey erkannt: " . get_class($key) . PHP_EOL;
}
handleMaxKey($maxKey);
MaxKey in einem MongoDB-Dokument als Bereichsgrenze verwenden
<?php
use MongoDB\BSON\MaxKey;
use MongoDB\BSON\MaxKeyInterface;
use MongoDB\Client;
// Verbindung zur MongoDB
$client = new Client('mongodb://localhost:27017');
$collection = $client->testdb->ranges;
// Dokument mit MaxKey als obere Schranke einfügen
$collection->insertOne([
'label' => 'Obere Grenze',
'boundary' => new MaxKey(),
]);
// Dokument lesen und Typ prüfen
$doc = $collection->findOne(['label' => 'Obere Grenze']);
if ($doc['boundary'] instanceof MaxKeyInterface) {
echo "Grenzwert ist MaxKey – größer als alle anderen BSON-Werte." . PHP_EOL;
}
// Wichtig · Fallstricke
Eigene Implementierungen: Es ist möglich, eigene Klassen zu erstellen, die MaxKeyInterface implementieren, sofern die BSON-Serialisierung korrekt umgesetzt wird (z. B. via MongoDB\BSON\Serializable). In der Praxis ist die direkte Verwendung von MongoDB\BSON\MaxKey jedoch der empfohlene Weg.
Vergleichsverhalten: Da MaxKey beim internen MongoDB-Vergleich stets größer als alle anderen Typen ist, sollte er niemals als echter Datenwert in Dokumenten verwendet werden, sondern ausschließlich für Bereichsdefinitionen (z. B. Shard-Konfigurationen).
Dieses Interface gehört zur offiziellen ext-mongodb-Extension und ist nicht Teil der veralteten ext-mongo-Extension.