Я получил этот класс базы данных PDOИспользовать класс базы данных PDO без создания нового подключения каждый раз?
class clsDatabase{
// db settings
private $host = 'localhost';
private $user = 'test';
private $dbname = 'test';
private $pass = 'test1';
private $dbh;
private $error;
public function __construct(){
// Set DSN
$dsn = 'mysql: host=' . $this->host . ';dbname=' . $this->dbname;
// Set options
$options = array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'
);
// Create a new PDO instanace
try{
$this->dbh = new PDO($dsn, $this->user, $this->pass, $options);
}
// Catch any errors
catch(PDOException $e){
$this->error = $e->getMessage();
echo $this->error;
exit;
}
}
public function query($query){
$this->stmt = $this->dbh->prepare($query);
}
}
Я пытаюсь отделить свой код в различных классах, например, я получил clsDBUser, который подключен к clsUserController. Я делаю это, поэтому я знаю, какой класс использует какой код базы данных. Мой класс clsDBUser выглядит следующим образом
class clsDBUser extends clsDatabase {
// construct
public function __construct() {
parent::__construct();
}
// get users
public function getUsers($users_id){
$query = "
SELECT
email
FROM
users
WHERE
users_id = :users_id
";
$this->query($query);
$this->bind(':users_id', $users_id);
if($row = $this->single()){
$this->close();
return $row;
}
$this->close();
return false;
}
}
Я интересно, если это путь или я создание нового подключения к базе данных в каждом классе прямо сейчас? Потому что, как правило, в PHP4 (да, я знаю, старый), я не могу распознать, что мне приходилось каждый раз подключать новую базу данных.
Нужно ли мне это улучшить, как мне это улучшить?
Смотреть синглтонную реализацию и, в противном случае, шаблон дизайна, например, фабрику или посмотреть другие решения: http://stackoverflow.com/questions/2129162/how-do-you-efficiently-connect-to-mysql-in-php-without- reconnecting-on-every-que – Fky
PDO уже имеет отличный класс, зачем изобретать колесо плохо и без необходимости – RiggsFolly
Зачем вызывать метод 'query()', когда все его выполнение - это 'подготовка' **, все, что вы добавляете к PDO это путаница ** – RiggsFolly