Start · Sprachen · PHP · Referenz · mysql_xdevapi\SchemaObject

mysql_xdevapi\SchemaObject

Interface

Basisinterface für alle Objekte, die innerhalb eines MySQL X DevAPI-Schemas existieren (z. B. Collections und Tables).

seit PHP 8.0.11 Kategorie: db

Signatur

interface SchemaObject

Beschreibung

mysql_xdevapi\SchemaObject ist ein grundlegendes Interface der MySQL X DevAPI-Erweiterung für PHP. Es definiert die gemeinsame Schnittstelle für alle Objekte, die innerhalb eines Datenbankschemas existieren, wie etwa Collection oder Table.

Jedes Objekt, das dieses Interface implementiert, kann Auskunft über das Schema geben, zu dem es gehört. Damit bietet SchemaObject eine einheitliche Basis, auf der andere Interface-Definitionen und Klassen aufbauen können.

Das Interface ist insbesondere nützlich, wenn man in eigenen Abstraktionsschichten typsicher auf Schema-gebundene Objekte arbeiten möchte, ohne sich auf einen konkreten Typ (z. B. Collection oder Table) festlegen zu müssen.

  • getSchema(): Gibt das Schema zurück, zu dem das Objekt gehört.
  • existsInDatabase(): Prüft, ob das Objekt tatsächlich in der Datenbank existiert.

Beispiele

Typprüfung auf SchemaObject in einer Hilfsfunktion

<?php
use mysql_xdevapi\SchemaObject;

/**
 * Gibt den Namen des Schemas zurück, zu dem ein Schema-Objekt gehört.
 */
function getSchemaName(SchemaObject $obj): string {
    return $obj->getSchema()->getName();
}

$session = mysql_xdevapi\getSession('mysqlx://user:pass@localhost');
$schema  = $session->getSchema('meine_datenbank');

// Collection implementiert SchemaObject
$collection = $schema->getCollection('meine_kollektion');

echo getSchemaName($collection); // Ausgabe: meine_datenbank
meine_datenbank

Existenzprüfung eines Schema-Objekts

<?php
use mysql_xdevapi\SchemaObject;

function checkExists(SchemaObject $obj): void {
    if ($obj->existsInDatabase()) {
        echo 'Das Objekt existiert in der Datenbank.' . PHP_EOL;
    } else {
        echo 'Das Objekt existiert NICHT in der Datenbank.' . PHP_EOL;
    }
}

$session = mysql_xdevapi\getSession('mysqlx://user:pass@localhost');
$schema  = $session->getSchema('meine_datenbank');
$table   = $schema->getTable('nicht_vorhandene_tabelle');

checkExists($table);
Das Objekt existiert NICHT in der Datenbank.

// Wichtig · Fallstricke

Das Interface mysql_xdevapi\SchemaObject ist Teil der mysql_xdevapi-Erweiterung, die das MySQL X Protocol (Document Store) unterstützt. Es ist nicht Teil der klassischen mysqli- oder PDO_MySQL-Erweiterung.

Die Erweiterung muss separat installiert werden (PECL-Paket mysql_xdevapi) und erfordert einen MySQL-Server ab Version 5.7.12 mit aktiviertem X Plugin. Fehlt die Erweiterung, führen alle Aufrufe zu einem fatalen Fehler.