Comprendre la POO avec la connexion PDO
La programmation orientée objet (POO) offre une approche structurée de la conception de logiciels, modélisant des entités du monde réel comme objets. Dans le contexte de la connectivité aux bases de données utilisant le PDO (PDO) de PHP, comprendre l'utilisation correcte de la POO est crucial.
Considérez un scénario de connexion à la base de données dans lequel vous disposez de plusieurs classes : une classe Database gérant la connexion à la base de données et une classe User. effectuer des opérations sur la base de données. Analysons ce qui est donné code :
Base de données.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; } }
Utilisateur.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... } }
Application .php :
$user = new User(); $list = $user->login(); // Rest of the code...
Erreurs et souhaits Comportement :
L'exécution de ce code entraîne une erreur indiquant que prepare() est une méthode non définie pour la base de données.
Implémentation correcte :
Pour résoudre ce problème, nous devons suivre ces directives :
Mise à jour Code :
base de données.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);
Utilisateur.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...
Ce code établira une connexion à la base de données via database.php et transmettez l’instance de connexion au constructeur de la classe User. L'utilisateur peut ensuite exécuter des requêtes à l'aide de l'objet PDO stocké dans $conn.
Avantages :
Cette approche offre de nombreux avantages par rapport à l'implémentation d'origine :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!