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

Sử dụng PDO trong các lớp học

Bạn có thể khởi tạo kết nối của mình với cơ sở dữ liệu trong một lớp triển khai mô hình singleton. Kết nối sẽ được thực hiện một lần và lớp này sẽ có thể dễ dàng truy cập bởi tất cả các đối tượng / tập lệnh khác của bạn.

tôi sử dụng một lớp có tên là "Core" trong ví dụ sau;

class Core
{
    public $dbh; // handle of the db connexion
    private static $instance;

    private function __construct()
    {
        // building data source name from config
        $dsn = 'pgsql:host=' . Config::read('db.host') .
               ';dbname='    . Config::read('db.basename') .
               ';port='      . Config::read('db.port') .
               ';connect_timeout=15';
        // getting DB user from config                
        $user = Config::read('db.user');
        // getting DB password from config                
        $password = Config::read('db.password');

        $this->dbh = new PDO($dsn, $user, $password);
    }

    public static function getInstance()
    {
        if (!isset(self::$instance))
        {
            $object = __CLASS__;
            self::$instance = new $object;
        }
        return self::$instance;
    }

    // others global functions
}

lớp này nhận các tham số từ một lớp tĩnh được gọi là "Cấu hình" nơi bạn có thể lưu trữ cấu hình của mình:

<?php
class Config
{
    static $confArray;

    public static function read($name)
    {
        return self::$confArray[$name];
    }

    public static function write($name, $value)
    {
        self::$confArray[$name] = $value;
    }

}

// db
Config::write('db.host', '127.0.0.1');
Config::write('db.port', '5432');
Config::write('db.basename', 'mydb');
Config::write('db.user', 'myuser');
Config::write('db.password', 'mypassword');

trong tất cả các tập lệnh / đối tượng của bạn, bạn chỉ cần lấy bản sao của Core và sau đó truy vấn DB

$sql = "select login, email from users where id = :id";

try {
    $core = Core::getInstance();
    $stmt = $core->dbh->prepare($sql);
    $stmt->bindParam(':id', $this->id, PDO::PARAM_INT);

    if ($stmt->execute()) {
        $o = $stmt->fetch(PDO::FETCH_OBJ);
        // blablabla....

Nếu bạn cần thêm thông tin về singleton, hãy xem tài liệu PHP http://php .net / manual / en / language.oop5.patterns.php



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chèn một chuỗi vào một chuỗi khác trong MySQL bằng cách sử dụng INSERT ()

  2. Làm việc với MyISAM trong MySQL

  3. Cách thay đổi mật khẩu gốc của MySQL hoặc MariaDB trong Linux

  4. 1114 (HY000):Bảng đã đầy

  5. Gọi đến một hàm thành viên thực thi () trên boolean trong