Tôi đang cố gắng tạo một lớp đơn giản để sử dụng singleton để kết nối với cơ sở dữ liệu mysql và thực hiện truy vấn, mã hoạt động tốt và tôi chưa gặp bất kỳ vấn đề nào với nó, nhưng vì tôi mới sử dụng OOP cho dù đây là thực hành xấu hay không.kết nối cơ sở dữ liệu singleton php, thực thi mã này có tệ không?
Đây là lớp
class Database {
private $databaseName = 'dbname';
private $host = 'localhost';
private $user = 'user';
private $password = 'pass';
private static $instance; //store the single instance of the database
private function __construct(){
//This will load only once regardless of how many times the class is called
$connection = mysql_connect($this->host, $this->user, $this->password) or die (mysql_error());
$db = mysql_select_db($this->databaseName, $connection) or die(mysql_error());
echo 'DB initiated<br>';
}
//this function makes sure there's only 1 instance of the Database class
public static function getInstance(){
if(!self::$instance){
self::$instance = new Database();
}
return self::$instance;
}
public function connect() {
//db connection
}
public function query($query) {
//queries
$sql = mysql_query($query) or die(mysql_error());
return $sql;
}
public function numrows($query) {
//count number of rows
$sql = $this->query($query);
return mysql_num_rows($sql);
}
}
//Intantiate the class
$database = Database::getInstance();
và khi tôi muốn sử dụng lớp tôi sẽ làm:
$query = "SELECT * FROM registrations";
echo $database->numrows($query);
$sql = $database->query($query);
Mẫu Singleton thường được triển khai trong Lớp cơ sở dữ liệu, Trình ghi nhật ký, Bộ điều khiển mặt trước hoặc Đối tượng yêu cầu và phản hồi. – diEcho
tôi không thấy bất kỳ sự cố nào trong số – jere
Có vô số lớp học db này bạn có thể xem. Thậm chí nhìn vào các khuôn khổ như codeigniter để xem các lớp db của chúng hoạt động như thế nào. –