Während des Entwicklungsprozesses hängt die, ob die Datenstrukturausgabe durch die Schnittstelle stabil ist, in direktem Zusammenhang mit der Stabilität des Front-End- und anderer Systemaufrufe. Insbesondere wenn es um Datenbankabfragen geht, ist die Anzahl der von der Schnittstelle zurückgegebenen Felder ein sehr wichtiger Teil. In diesem Artikel wird untersucht, wie die Konsistenzprüfung von Schnittstellenausgabestrukturen rund um die PDOSTATEMENT :: ColumnCount -Methode in PHP implementiert und einige praktische Tipps weitergegeben werden.
Pdostatement :: columncount ist eine Methode im PDO -Abfrageergebnisobjekt, um die Anzahl der Spalten im aktuellen Ergebnissatz zu erhalten. Die grundlegende Nutzung ist wie folgt:
<?php
$stmt = $pdo->query("SELECT id, name, email FROM users");
$columnCount = $stmt->columnCount();
echo "Die Anzahl der Spalten, die im Abfrageergebnis enthalten sind: " . $columnCount;
?>
Bei der Prüfung der Schnittstellenprüfung kann durch Überprüfen, ob die Anzahl der Spalten den Erwartungen entspricht, schnell feststellen, ob sich die Ausgangsstruktur der Schnittstelle ändert.
Viele Schnittstellen basieren auf Datenbankabfragen, insbesondere auf erholsamer API oder GraphQL. Die Felderausgaben von der Schnittstelle können sich ändern, weil:
Datenbanktabellenstruktur ändert sich
SQL -Anweisung Änderung
Codeschicht behandelt logische Änderungen
ColumnCount kann schnell die Anzahl der zurückgegebenen Felder in der Schnittstellenschicht bestätigen, was hilft:
Es wurde festgestellt
Behauptung der Anzahl der voreingestellten Felder in automatisierten Tests
Vereinfachen Sie die Überprüfung der Feldzahlen für komplexe Datenstrukturen
Im Testcode können Sie die erwartete Anzahl von Feldern definieren und sie dann mit dem ColumnCount -Rückgabewert vergleichen:
<?php
$expectedColumns = 5; // Erwartete Schnittstelle zur Rückkehr5Felder
$stmt = $pdo->prepare("SELECT id, username, email, status, created_at FROM users WHERE id = ?");
$stmt->execute([$userId]);
$actualColumns = $stmt->columnCount();
if ($actualColumns !== $expectedColumns) {
throw new Exception("Fehlanpassung der Schnittstellenfeldzahl,erwarten:{$expectedColumns},tatsächlich:{$actualColumns}");
}
?>
Die Schnittstelle gibt im Allgemeinen JSON zurück. Sie können ColumnCount zuerst verwenden, um das Feld Datenbankergebnis zu überprüfen und es dann mit der Anzahl der zurückgegebenen JSON -Felder zu vergleichen, um sicherzustellen, dass die Schnittstelle und die Datenbank konsistent sind.
<?php
$stmt = $pdo->prepare("SELECT id, name, age FROM m66.net_api.users WHERE status = ?");
$stmt->execute([1]);
$columnCount = $stmt->columnCount();
$data = $stmt->fetch(PDO::FETCH_ASSOC);
if (count($data) !== $columnCount) {
throw new Exception("Die Anzahl der Schnittstellendatenfelder stimmt nicht mit der Anzahl der Datenbankabfragefelder nicht ab");
}
echo json_encode($data);
?>
Einige Schnittstellenrückgabefelder können dynamisch generiert werden, z. B. die Rückgabe verschiedener Felder basierend auf Benutzerberechtigungen oder Parametern. Zu diesem Zeitpunkt kann ColumnCount durch die Beurteilung der Geschäftslogik flexibel verarbeitet werden.
<?php
$stmt = $pdo->prepare("SELECT id, email FROM m66.net_api.users WHERE role = ?");
$stmt->execute([$role]);
$columnCount = $stmt->columnCount();
if ($role === 'admin' && $columnCount < 5) {
throw new Exception("Die Administratorschnittstelle gibt unzureichende Felder zurück");
}
?>
In Kombination mit Phpunit- oder anderen Test -Frameworks kann ColumnCount als Behauptungspunkt verwendet werden, um automatisierte Grenzflächenstrukturkonsistenztests zu schreiben.
<?php
class ApiOutputTest extends PHPUnit\Framework\TestCase
{
protected $pdo;
protected function setUp(): void
{
$this->pdo = new PDO("mysql:host=m66.net;dbname=testdb", "username", "password");
}
public function testUserApiColumns()
{
$stmt = $this->pdo->query("SELECT id, username, email FROM users WHERE active = 1");
$this->assertEquals(3, $stmt->columnCount(), "Die Anzahl der Schnittstellenfelder entspricht nicht den Erwartungen");
}
}
?>
Die Anzahl der Spalten entspricht nicht der Feldgültigkeit : Die Spaltencount spiegelt nur die Anzahl der Spalten wider und garantiert nicht, dass der Spaltenname, der Reihenfolge oder der Datentyp konsistent sind. Strengere Tests erfordern eine zusätzliche Überprüfung der Feldnamen und -typen.
Begrenzte Treiber unterstützt : Einige PDO -Treiber unterstützen möglicherweise keine Columncount , sodass die Fahrerkompatibilität zuerst bestätigt werden muss.
Dynamisches SQL : Für dynamisch generierte SQL -Abfragen kann sich die Anzahl der Felder ändern, und es ist erforderlich, flexibel in Kombination mit Geschäftslogik während des Tests zu verarbeiten.
PDOSTATEMENT :: ColumnCount kann schnell die Anzahl der Felder in den Interface -Datenbankabfrageergebnissen erkennen, wodurch grundlegende Tests der Konsistenz der Schnittstellenausgangsstruktur erreicht werden können. In Kombination mit dem Automatisierungstest -Framework kann die Stabilität und Wartbarkeit der Schnittstelle eine weitere Überprüfung der Feldnamen und Datentypen erheblich verbessert werden. Ich hoffe, die Tipps in diesem Artikel können wertvolle Hilfe für Ihre Schnittstellentests bieten.