Signatur
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
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);
// 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.