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

MongoDB\BSON\MaxKeyInterface

Interface

Marker-Interface für Klassen, die den BSON-Typ <code>MaxKey</code> repräsentieren, der beim Vergleich immer größer als jeder andere BSON-Wert ist.

seit PHP 1.3.0 Kategorie: db

Signatur

interface MongoDB\BSON\MaxKeyInterface

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);
Das Objekt repräsentiert einen BSON-MaxKey-Wert. MaxKey erkannt: MongoDB\BSON\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;
}
Grenzwert ist MaxKey – größer als alle anderen BSON-Werte.

// 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.