写一个数据库连接的单例模式案例,确保只会产生一个数据库连接对象

Original 2019-04-09 11:25:43 281
abstract:<?php // 写一个数据库连接的单例模式案例,确保只会产生一个数据库连接对象 class Db { private $dsn = 'mysql:host=127.0.0.1;dbname=php_mysql;charset=utf8'; private $user = 'root
<?php
// 写一个数据库连接的单例模式案例,确保只会产生一个数据库连接对象
class Db
{
private $dsn = 'mysql:host=127.0.0.1;dbname=php_mysql;charset=utf8';
private $user = 'root';
private $pass = '123456';
// 类的实例化两种方式,一:new  二:clone
private function __construct(){}
private function __clone(){}
private static $single = null;
// 创建一个外部接口,创建并返回当前类的实例
public static function getPdo()
{
if(is_null(static::$single)){
static::$single = new static();
}
return static::$single;
}
public function getConnect(){
try{
$pdo = new Pdo($this->dsn,$this->user,$this->pass);
print_r('数据库连接成功');
}catch(PDOException $e){
print('数据库连接失败');
print_r($e->getMessage());
}
}

}
$sin1 = Db::getPdo();
$sin2 = Db::getPdo();
// $sin3 = new Single();
// var_dump($sin3);
echo $sin1 instanceof Db? '是':'不是';
echo '<br>';
echo $sin2 instanceof Db? '是':'不是';
echo '<br>';

echo $sin1 === $sin2 ? '属于同一个对象':'不属于同一个对象';
echo '<br>';

$sin1->getConnect();

1、我不知道这个小demo算不算是数据库连接的单例模式,我百度了然后再根据自己理解写的。

2、static::$single = new static() 这个写法我不太理解,这就创建了当前类的一个实例了?


Correcting teacher:天蓬老师Correction time:2019-04-09 11:39:40
Teacher's summary:单例模式, 属于创建型的设计模式, php的设计模式,与Java几乎是完全一样的. static关键字, 不仅仅是用来声明静态成员, 还可以用来绑定继承上下文环境中的类,这个要好好理解一下

Release Notes

Popular Entries