Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách lớp static và lớp singleton hoạt động (cơ sở dữ liệu)

Hãy xem xét ví dụ sau sử dụng mẫu thiết kế singleton để truy cập phiên bản của đối tượng cơ sở dữ liệu. (Mục đích của việc này là sử dụng lại cùng một kết nối thông qua ứng dụng)

Cơ sở dữ liệu lớp
class Database {

    protected static $_dbh;
    const HOST = 'localhost';
    const DATABASE = 'dbname';
    const USERNAME = 'username';
    const PASSWORD = 'password';

    //declare the constructor as private to avoid direct instantiation.   
    private function __construct() { }

    //access the database object through the getInstance method.
    public static function getInstance() {
        if(!isset($_dbh)) {
            #Connection String.
            self::$_dbh = new PDO('mysql:host='.self::HOST.';dbname='.self::DATABASE,self::USERNAME,self::PASSWORD);
            self::$_dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        }
        return self::$_dbh;
    }
}

bây giờ nếu tôi phải sử dụng lớp ở bất kỳ đâu trong ứng dụng, tôi sẽ đơn giản làm như thế này.

require_once('database.php');
$dbh = Database::getInstance();
$sth = $dbh->query('SELECT * FROM sometable');
$result = $sth->fetchAll(PDO::FETCH_ASSOC);

lệnh gọi đến Database::getInstance(); sử dụng phương pháp tĩnh. về cơ bản điều này làm là nó hạn chế bạn khởi tạo trực tiếp đối tượng bằng cách khai báo phương thức khởi tạo là private và thay vào đó nó sẽ kiểm tra xem đối tượng đã được cài đặt sẵn chưa. nếu đúng thì trả về đối tượng đã được khởi tạo. khác tạo mới và trả về đối tượng mới được tạo. điều này đảm bảo rằng cùng một kết nối cơ sở dữ liệu được sử dụng lại thông qua ứng dụng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn VÀO MySQL TỪ một bảng khác

  2. Trường MySQL đơn với các giá trị được phân tách bằng dấu phẩy

  3. Xóa, Cắt ngắn hoặc Thả để xóa một bảng trong MySQL

  4. Làm cách nào để tạo người dùng có cùng đặc quyền với quyền root trong MySQL / MariaDB?

  5. Cách tăng giá trị trong MySQL với PHP mysqli