php PDO单例

chen 提交于 周日, 08/23/2020 - 15:22

<?php

/**
* 数据库单例
*/

class PDODB {

//唯一实例
private static $pdo;

//防止直接new
private function __construct(){
self::$pdo = new \PDO('mysql:host=localhost;dbname=rbac', 'root', 'root');
}

//防止克隆
private function __clone(){}

//外部获取类实例的唯一入口
public static function getInstance() {

//判断$instance是否为Singleton的实例,不是则创建
if (!self::$pdo instanceof self) {
self::$pdo = new self();
}

//单例
return self::$pdo;
}
}

//测试:直接new
//$pdo = new PDODB();

//测试:克隆
$pdo = PDODB::getInstance();
//$pdo1 = clone $pdo;

//单例
var_dump($pdo);
$pdo2 = $pdo;
var_dump($pdo2);

标签