Start · Sprachen · PHP · Referenz · mysql_xdevapi\CrudOperationLimitable

mysql_xdevapi\CrudOperationLimitable

Interface

Definiert eine Schnittstelle für CRUD-Operationen in der MySQL X DevAPI, die eine Begrenzung der Ergebnisanzahl unterstützen.

seit PHP 8.0.0 Kategorie: db

Signatur

interface CrudOperationLimitable

Beschreibung

Das Interface mysql_xdevapi\CrudOperationLimitable ist Teil der MySQL X DevAPI-Erweiterung für PHP und stellt eine Schnittstelle bereit, die CRUD-Operationen implementieren müssen, wenn sie das Einschränken der Anzahl der betroffenen oder zurückgegebenen Datensätze unterstützen.

Klassen, die dieses Interface implementieren, stellen typischerweise eine limit()-Methode zur Verfügung, mit der festgelegt werden kann, wie viele Datensätze maximal von der jeweiligen Operation berücksichtigt werden sollen. Dies ist besonders nützlich bei SELECT-, UPDATE- oder DELETE-Operationen auf großen Datensätzen, um Ressourcen zu schonen und die Antwortzeiten zu verbessern.

Das Interface wird im Kontext der dokumentenorientierten und relationalen API von MySQL X DevAPI eingesetzt und ermöglicht eine einheitliche Behandlung von limitierbaren Operationen. Typische implementierende Klassen sind etwa CollectionFind, CollectionModify, CollectionRemove, TableSelect, TableUpdate und TableDelete.

  • Erlaubt die Einschränkung der Ergebnisanzahl über eine einheitliche Schnittstelle.
  • Fördert konsistentes API-Design innerhalb der X DevAPI-Erweiterung.
  • Eignet sich zur Typisierung in eigenen Abstraktionen rund um die X DevAPI.

Beispiele

Verwendung von limit() über das Interface bei einer Collection-Abfrage

<?php
// Verbindung zur MySQL-Datenbank über X DevAPI
$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');
$schema = $session->getSchema('testdb');
$collection = $schema->getCollection('users');

// CollectionFind implementiert CrudOperationLimitable
$findOp = $collection->find('age > 18');

// limit() ist durch das Interface CrudOperationLimitable garantiert
$result = $findOp->limit(10)->execute();

foreach ($result->fetchAll() as $doc) {
    echo $doc['name'] . PHP_EOL;
}

$session->close();

Typsichere Hilfsfunktion mit CrudOperationLimitable

<?php
use mysql_xdevapi\CrudOperationLimitable;

/**
 * Wendet ein Limit auf eine beliebige limitierbare CRUD-Operation an.
 *
 * @param CrudOperationLimitable $operation Die limitierbare Operation.
 * @param int $limit                         Maximale Anzahl an Datensätzen.
 * @return CrudOperationLimitable            Die Operation mit gesetztem Limit.
 */
function applyLimit(CrudOperationLimitable $operation, int $limit): CrudOperationLimitable
{
    return $operation->limit($limit);
}

$session = mysql_xdevapi\getSession('mysqlx://user:password@localhost');
$schema = $session->getSchema('testdb');
$table = $schema->getTable('orders');

// TableSelect implementiert CrudOperationLimitable
$selectOp = $table->select('id', 'total')->where('total > 100');
$limitedOp = applyLimit($selectOp, 5);
$result = $limitedOp->execute();

foreach ($result->fetchAll() as $row) {
    echo 'Order ID: ' . $row['id'] . ', Total: ' . $row['total'] . PHP_EOL;
}

$session->close();

// Wichtig · Fallstricke

Verfügbarkeit: Das Interface mysql_xdevapi\CrudOperationLimitable ist nur verfügbar, wenn die PHP-Erweiterung mysql_xdevapi installiert und aktiviert ist. Diese Erweiterung befindet sich im PECL-Repository und ist nicht Bestandteil der Standard-PHP-Distribution.

Versionierung: Da sich die X DevAPI-Erweiterung noch in aktiver Entwicklung befindet, können sich Interface-Definitionen und Methodensignaturen zwischen Versionen ändern. Es empfiehlt sich, die offizielle Dokumentation für die jeweilig eingesetzte Version zu konsultieren.