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

MongoDB\BSON\MinKeyInterface

Interface

Markiert eine Klasse als Repräsentation des BSON-Typs <code>MinKey</code>, der den kleinstmöglichen Vergleichswert in MongoDB darstellt.

seit PHP 1.3.0 Kategorie: db

Signatur

interface MinKeyInterface

Beschreibung

MongoDB\BSON\MinKeyInterface ist ein Marker-Interface aus dem MongoDB-BSON-Erweiterungspaket. Es kennzeichnet Klassen, deren Instanzen den speziellen BSON-Typ MinKey repräsentieren. MinKey ist ein BSON-Sondertyp, der beim Vergleich kleiner als jeder andere BSON-Wert ist – unabhängig vom tatsächlichen Datentyp des Vergleichswerts.

Das Interface selbst definiert keine Methoden; es dient ausschließlich als Typ-Markierung. Die konkrete Implementierung übernimmt die eingebaute Klasse MongoDB\BSON\MinKey. Eigene Klassen können MinKeyInterface implementieren, wenn sie ebenfalls als MinKey-Repräsentation in der BSON-Serialisierung behandelt werden sollen.

Typische Anwendungsfälle sind Bereichsabfragen, bei denen sichergestellt werden soll, dass ein Feld den absoluten unteren Grenzwert überschreitet, oder beim Sharding, wo MinKey als untere Shard-Key-Grenze genutzt wird. Durch die Verwendung des Interfaces in Typprüfungen (instanceof MinKeyInterface) bleibt der Code unabhängig von der konkreten Implementierungsklasse.

Das Interface gehört zur Erweiterung mongodb (PECL) und wird gemeinsam mit dem Composer-Paket mongodb/mongodb verwendet. PHP-Code, der typsicher mit BSON-Daten arbeitet, sollte stets gegen dieses Interface prüfen, nicht gegen die konkrete Klasse.

Beispiele

Prüfen, ob ein BSON-Wert MinKey ist

<?php
require 'vendor/autoload.php';

use MongoDB\BSON\MinKey;
use MongoDB\BSON\MinKeyInterface;

$minKey = new MinKey();

if ($minKey instanceof MinKeyInterface) {
    echo "Der Wert ist ein BSON MinKey." . PHP_EOL;
}

// Typsichere Funktion, unabhängig von der konkreten Klasse
function isMinKey(mixed $value): bool {
    return $value instanceof MinKeyInterface;
}

var_dump(isMinKey(new MinKey())); // bool(true)
var_dump(isMinKey('anderer Wert')); // bool(false)
Der Wert ist ein BSON MinKey. bool(true) bool(false)

Eigene MinKey-Klasse implementieren

<?php
require 'vendor/autoload.php';

use MongoDB\BSON\MinKeyInterface;
use MongoDB\BSON\Serializable;

/**
 * Eigene MinKey-Repräsentation für besondere Serialisierungslogik.
 */
class CustomMinKey implements MinKeyInterface, Serializable
{
    public function bsonSerialize(): array|object
    {
        // Delegiert intern an die echte MinKey-Klasse
        return new \MongoDB\BSON\MinKey();
    }
}

$value = new CustomMinKey();

if ($value instanceof MinKeyInterface) {
    echo "CustomMinKey wird korrekt als MinKey erkannt." . PHP_EOL;
}
CustomMinKey wird korrekt als MinKey erkannt.

// Wichtig · Fallstricke

Achtung: Das Interface gehört zur PECL-Erweiterung mongodb (nicht zur älteren mongo-Erweiterung). Es steht ab Version 1.3.0 der Erweiterung zur Verfügung. Vor der Verwendung muss die Erweiterung installiert sein (pecl install mongodb).

Eigene Implementierungen dieses Interfaces müssen sicherstellen, dass sie beim BSON-Serialisierungsprozess korrekt behandelt werden, andernfalls kann es zu unerwartetem Verhalten beim Schreiben in MongoDB kommen. Die Verwendung von instanceof MinKeyInterface statt instanceof MinKey ist empfohlen, um die Kopplung an konkrete Klassen zu vermeiden.