Memahami OOP dengan Sambungan PDO
Pengaturcaraan berorientasikan objek (OOP) menawarkan pendekatan berstruktur kepada reka bentuk perisian, memodelkan entiti dunia sebenar sebagai objek. Dalam konteks sambungan pangkalan data menggunakan PDO (PDO) PHP, memahami penggunaan OOP yang betul adalah penting.
Pertimbangkan senario sambungan pangkalan data di mana anda mempunyai berbilang kelas: kelas Pangkalan Data yang mengendalikan sambungan pangkalan data dan kelas Pengguna menjalankan operasi pada pangkalan data. Mari analisa yang diberikan kod:
Pangkalan Data.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; } }
Pengguna.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... } }
Apl .php:
$user = new User(); $list = $user->login(); // Rest of the code...
Ralat dan Diingini Gelagat:
Melaksanakan kod ini mengakibatkan ralat yang menunjukkan bahawa prepare() ialah kaedah yang tidak ditentukan untuk Pangkalan Data.
Pelaksanaan Betul:
Untuk membetulkannya, kita perlu mengikut garis panduan ini:
dikemas kini Kod:
pangkalan data.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);
Pengguna.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...
Kod ini akan mewujudkan sambungan pangkalan data melalui database.php dan hantar contoh sambungan kepada pembina kelas Pengguna. Pengguna kemudiannya boleh melaksanakan pertanyaan menggunakan objek PDO yang disimpan dalam $conn.
Faedah:
Pendekatan ini memberikan banyak faedah berbanding pelaksanaan asal:
Atas ialah kandungan terperinci Bagaimanakah Prinsip OOP Boleh Meningkatkan Pengendalian Sambungan Pangkalan Data dalam PHP menggunakan PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!