Пример того, как вы реализуете шаблон Singleton для класса базы данных, можно увидеть ниже:
class Database implements Singleton {
private static $instance;
private $pdo;
private function __construct() {
$this->pdo = new PDO(
"mysql:host=localhost;dbname=database",
"user",
"password"
);
}
public static function getInstance() {
if(self::$instance === null) {
self::$instance = new Database();
}
return self::$instance->pdo;
}
}
Вы можете использовать этот класс следующим образом:
$db = Database::getInstance();
// $db is now an instance of PDO
$db->prepare("SELECT ...");
// ...
$db = Database::getInstance();
// $db is the same instance as before
И для справки, интерфейс Singleton
будет выглядеть так:
interface Singleton {
public static function getInstance();
}