Mysql
 sql >> база данни >  >> RDS >> Mysql

Как работят статични срещу единични класове (бази данни)

Помислете за следния пример, който използва единичния модел на проектиране за достъп до екземпляра на обекта на базата данни. (целта на това е повторното използване на същата връзка отново и отново в приложението)

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

сега, ако трябва да използвам класа някъде в приложението, просто бих го направил така.

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

извикването към Database::getInstance(); използва статичен метод. това, което по същество прави, е, че ви ограничава директното инстанциране на обекта, като декларирате конструктора като частен и вместо това проверява дали обектът вече е инстанциран. ако е истина, тогава върнете вече инстанциран обект. else създава нов и връща новосъздадения обект. това гарантира, че същата връзка към базата данни се използва повторно в приложението.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да премахнете водещите и крайните празни места в полето на MySQL?

  2. Изтрийте с помощта на множество таблици и повторете таблицата в подзаявката

  3. Защо и къде да използваме ИНДЕКС - плюсове и минуси

  4. MySQL 5.6 Проблем с пълнотекстово търсене при търсене на думата the в PHP

  5. MySQL 5.5 таблица с дялове от A-Z