Раньше я расширял класс соединения Db в каждом классе, которому необходимо подключиться к базе данных. Я думаю, что это самый распространенный способ. Но, следуя этому пути, вы открываете и закрываете новое соединение в каждом экземпляре класса, который расширяет класс соединения с базой данных. В последнее время я думал, что могу создать объект pdo и передать его в конструктор класса. Таким образом, каждый экземпляр класса, которому требуется доступ к базе данных, использует одно и то же соединение. Это работает, но я не уверен, что это эффективный способ сделать это. Кроме того, у меня есть функция closeCon, которую я вызываю в конце скрипта, чтобы закрыть соединение через null и unset. Я хотел бы знать и ваше мнение по этому поводу. Заранее спасибо : )
МЕТОД 1: Новый класс расширяет класс dbConnection.
class Db {
public $pdo;
public function __construct($usr, $pwd, $db) {
$this->pdo = new PDO("mysql:host=localhost;dbname=".$db.";charset=utf8", $usr, $pwd);
}
}
class Users extends Db{
public function __construct(){
parent::__construct($usr, $pwd, $db);
}
}
МЕТОД 2: подключиться к базе данных, передав переменную PDO dbConnection в конструктор нового класса.
class Db {
public $pdo;
public function __construct($usr, $pwd, $db) {
$this->pdo = new PDO("mysql:host=localhost;dbname=".$db.";charset=utf8", $usr, $pwd);
}
public function closeCon(){
$this->pdo = null;
unset($this->pdo);
}
}
class Users {
protected $pdo;
public function __construct($con){
$this->pdo = $con;
}
}
$db = new Db($usr, $pwd, $db);
$posts = new Users($db->pdo);
$db->closeCon();