透過PDO 連結了解OOP
物件導向程式設計(OOP) 提供了一種結構化的軟體設計方法,將現實世界的實體建模為物件。在使用 PHP 的 PDO (PDO) 進行資料庫連接的上下文中,理解 OOP 的正確用法至關重要。
考慮一個資料庫連線場景,其中您有多個類別:處理資料庫連線的 Database 類別和 User 類別對資料庫執行操作。讓我們來分析給定的程式碼:
資料庫.php:
class Database { private $conn; private $dsn = 'mysql:dbname=test;host=127.0.0.1'; private $user = 'root'; private $password = ''; public function __construct() { $this->conn = new PDO($this->dsn, $this->user, $this->password); return $this->conn; } }
使用者。 php:
include "database.php"; class User { private $conn; public function __construct() { $this->conn = new Database(); } public function login() { $stmt = $this->conn->prepare("SELECT username, usermail FROM user"); // Rest of the code... } }
App.php:
$user = new User(); $list = $user->login(); // Rest of the code...
錯誤和期望的行為:
執行此程式碼會導致錯誤,表示prepare()是資料庫的未定義方法。正確實作:
要解決此問題,我們需要遵循以下準則:
已更新程式碼:
database.php:
// Define database connection parameters $host = '127.0.0.1'; $db = 'test'; $user = 'root'; $pass = ''; $charset = 'utf8'; // Create a PDO connection $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);
U ser.php:
class User { private $conn; public function __construct(\PDO $pdo) { $this->conn = $pdo; } public function getUsers() { return $this->conn->query("SELECT username, usermail FROM user")->fetchAll(); } }
App.php:
include 'database.php'; $user = new User($pdo); $list = $user->getUsers(); // Rest of the code...
這個程式碼將透過database.php建立資料庫連接,並將連接實例傳遞給User類別建構函數。然後,使用者可以使用儲存在 $conn 中的 PDO 物件執行查詢。
好處:以上是OOP 原則如何使用 PDO 來改善 PHP 中的資料庫連線處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!