Heim > Backend-Entwicklung > PHP-Tutorial > Wie verwende ich eine PDO-Verbindung über mehrere Klassen hinweg in PHP richtig?

Wie verwende ich eine PDO-Verbindung über mehrere Klassen hinweg in PHP richtig?

Barbara Streisand
Freigeben: 2024-12-21 00:50:08
Original
1040 Leute haben es durchsucht

How to Properly Use a PDO Connection Across Multiple Classes in PHP?

Wie verwende ich eine PDO-Verbindung in anderen Klassen?

Den rätselhaften Fehler verstehen

Eine Fehlermeldung mit der Meldung „Nicht erfasster Fehler: Aufruf einer undefinierten Methodendatenbank“. ::prepare()“ kann auftreten, wenn versucht wird, eine PDO-Verbindung in einer separaten Klasse zu verwenden. Dieser Fehler ist auf ein Missverständnis darüber zurückzuführen, wie objektorientierte Programmierung (OOP) Objekte miteinander verbindet.

Lösung des Problems

1. Überdenken Sie Ihre Datenbankklasse:
Die vorhandene Datenbankklasse erfüllt keinen sinnvollen Zweck. Konzentrieren Sie sich stattdessen auf die Erstellung einer Wrapper-Klasse, wenn diese die Funktionalität von PDO erweitert.

2. Stellen Sie eine zentrale Datenbankverbindung her:
Instanziieren Sie ein eigenständiges $db-Objekt mithilfe von PDO oder Ihrer erweiterten Datenbankklasse. Diese einzelne Verbindung wird als Grundstein für alle zukünftigen Datenbankaktivitäten dienen.

3. Übergeben Sie die Verbindung als Konstruktorparameter:
Jede Klasse, die Datenbankzugriff benötigt, sollte die $db-Verbindung als Konstruktorargument erhalten. Dieser Ansatz garantiert einen nahtlosen Zugriff auf die Datenbank während Ihrer gesamten Anwendung.

Ein umfassendes Beispiel

Betrachten Sie Folgendes als verbessert Codebasis:

database.php:

$host = '127.0.0.1';
$db   = 'test';
$user = 'root';
$pass = '';
$charset = 'utf8';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = [
    \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
    \PDO::ATTR_EMULATE_PREPARES   => false,
];
$pdo = new \PDO($dsn, $user, $pass, $opt);
Nach dem Login kopieren

user.php:

class User {
    /* Properties */
    private $conn;

    /* Get database access */
    public function __construct(\PDO $pdo) {
        $this->conn = $pdo;
    }

    /* List all users */
    public function getUsers() {
        return $this->conn->query("SELECT username, usermail FROM user")->fetchAll();
    }
}
Nach dem Login kopieren

app .php:

include 'database.php';
$user = new User($pdo);
$list = $user->getUsers();

foreach($list as $test) {
    echo $test["username"],"\n";
}
Nach dem Login kopieren

Diese verfeinerte Codebasis veranschaulicht die korrekte Verwendung von PDO-Verbindungen in mehreren Klassen sorgen für einen fehlerfreien Betrieb und elegante Codierungspraktiken.

Das obige ist der detaillierte Inhalt vonWie verwende ich eine PDO-Verbindung über mehrere Klassen hinweg in PHP richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage