Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara kerja kelas statis vs tunggal (basis data)

Perhatikan contoh berikut yang menggunakan pola desain tunggal untuk mengakses instance objek database. (Tujuannya adalah untuk menggunakan kembali koneksi yang sama berulang kali di seluruh aplikasi)

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;
    }
}

sekarang jika saya harus menggunakan kelas di mana saja dalam aplikasi, saya akan melakukannya dengan mudah seperti ini.

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

panggilan ke Database::getInstance(); menggunakan metode statis. apa yang pada dasarnya dilakukan ini adalah membatasi Anda untuk membuat objek secara langsung dengan mendeklarasikan konstruktor sebagai pribadi, dan sebaliknya memeriksa apakah objek sudah dibuat instance. jika benar maka kembalikan objek yang sudah dipakai. lain buat yang baru dan kembalikan objek yang baru dibuat. ini memastikan bahwa koneksi database yang sama digunakan kembali di seluruh aplikasi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bekerja dengan Kursor SQL

  2. Mysql:Bagaimana cara memanggil file skrip sql dari file skrip sql lain?

  3. Lewati nomor sebagai nama kolom dalam pernyataan pilih Sql

  4. Memanggil REST API dari pemicu atau prosedur tersimpan di mysql?

  5. Kinerja MySQL:Indeks MySQL/MariaDB