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

MongoDB\BSON\RegexInterface

Interface

Interface für Klassen, die einen regulären BSON-Ausdruck (Regex-Typ) repräsentieren.

seit PHP 1.3.0 Kategorie: db

Signatur

interface RegexInterface

Beschreibung

MongoDB\BSON\RegexInterface definiert den Vertrag für Objekte, die einen regulären Ausdruck im BSON-Format darstellen. BSON besitzt einen eigenen nativen Typ für reguläre Ausdrücke, der sowohl das Muster (pattern) als auch die Flags (z. B. i für case-insensitive) enthält.

Klassen, die dieses Interface implementieren, können überall dort verwendet werden, wo der MongoDB-PHP-Treiber einen BSON-Regex erwartet — also insbesondere beim Serialisieren von Abfragen und Dokumenten. Die Referenzimplementierung des Treibers ist MongoDB\BSON\Regex.

Das Interface schreibt zwei Methoden vor: getPattern() für das Regex-Muster und getFlags() für die Flags. Damit können eigene Klassen erstellt werden, die das Interface implementieren und die Regex-Daten intern anders speichern oder validieren, aber trotzdem nahtlos mit dem Treiber zusammenarbeiten.

Typischerweise wird dieses Interface verwendet, wenn man eine eigene Domain-Klasse erstellen möchte, die einen BSON-Regex repräsentiert, ohne direkt von MongoDB\BSON\Regex abzuleiten.

Beispiele

Eigene Implementierung von RegexInterface

<?php
use MongoDB\BSON\RegexInterface;

class MyRegex implements RegexInterface
{
    private string $pattern;
    private string $flags;

    public function __construct(string $pattern, string $flags = '')
    {
        $this->pattern = $pattern;
        $this->flags   = $flags;
    }

    public function getPattern(): string
    {
        return $this->pattern;
    }

    public function getFlags(): string
    {
        return $this->flags;
    }

    public function __toString(): string
    {
        return '/' . $this->pattern . '/' . $this->flags;
    }
}

$regex = new MyRegex('php', 'i');
echo $regex->getPattern() . PHP_EOL; // php
echo $regex->getFlags() . PHP_EOL;   // i
echo $regex . PHP_EOL;               // /php/i
php i /php/i

Verwendung mit MongoDB\BSON\Regex in einer Datenbankabfrage

<?php
use MongoDB\BSON\Regex;
use MongoDB\Client;

$client     = new Client('mongodb://localhost:27017');
$collection = $client->testdb->articles;

// Nativer BSON-Regex-Typ, der RegexInterface implementiert
$regex = new Regex('^PHP', 'i');

// Suche nach Dokumenten, deren 'title' mit 'PHP' beginnt (case-insensitive)
$cursor = $collection->find(['title' => $regex]);

foreach ($cursor as $document) {
    echo $document['title'] . PHP_EOL;
}

// Wichtig · Fallstricke

Methoden des Interface:

  • getPattern(): string — Gibt das Regex-Muster zurück.
  • getFlags(): string — Gibt die Flags des regulären Ausdrucks zurück (z. B. i, m, s, x).

Sicherheitshinweis: Beim Einfügen von Benutzereingaben in ein Regex-Muster sollten diese sorgfältig validiert oder escaped werden, um unerwartetes Verhalten oder eine übermäßige CPU-Last durch sogenannte ReDoS-Angriffe (Regular Expression Denial of Service) zu vermeiden.

Beachte, dass BSON-Regex-Flags sich von PHP-eigenen PCRE-Flags unterscheiden können. Nicht alle PHP-Regex-Flags sind in BSON gültig.