44 lines
1.0 KiB
PHP
44 lines
1.0 KiB
PHP
<?php
|
|
/**
|
|
* PDO 数据库连接类(单例模式)
|
|
* 用法:$pdo = DB::getInstance()->getPdo();
|
|
*/
|
|
class DB
|
|
{
|
|
private static $instance = null;
|
|
private $pdo;
|
|
|
|
private function __construct()
|
|
{
|
|
$cfg = require __DIR__ . '/../../config/database.php';
|
|
$dsn = sprintf(
|
|
'mysql:host=%s;port=%d;dbname=%s;charset=%s',
|
|
$cfg['host'],
|
|
$cfg['port'],
|
|
$cfg['dbname'],
|
|
$cfg['charset']
|
|
);
|
|
$this->pdo = new PDO($dsn, $cfg['username'], $cfg['password'], [
|
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
|
PDO::ATTR_EMULATE_PREPARES => false,
|
|
]);
|
|
}
|
|
|
|
public static function getInstance()
|
|
{
|
|
if (self::$instance === null) {
|
|
self::$instance = new self();
|
|
}
|
|
return self::$instance;
|
|
}
|
|
|
|
public function getPdo()
|
|
{
|
|
return $this->pdo;
|
|
}
|
|
|
|
// 禁止克隆
|
|
private function __clone() {}
|
|
}
|