Signatur
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.