单例模式的定义:保证一个类只有一个实例,并提供一个访问它的全局访问点。这就意味着这个类只实例化一次,并做好防止外部再次实例化的措施,比如克隆私有化,构造函数私有化,还要把实例化好的资源保存起来,供外部使用。
这样做的目的是减少内存的消耗,因为每实例化一次就会消耗一次内存。
<?php
class Db {
// static 全局化变量,永久保存,供全局使用
private static $_instance;
private static $_dbConnect;
//保存数据库的配置信息
private $_dbConfig = array(
'host' => '127.0.0.1',
'user' => 'cddata',
'password' => 'cddata',
'database' => 'cddata',
);
//使用private防止用户new
private function __construct(){}
//重写clone防止用户进行clone
public function __clone(){
//当用户clone操作时产生一个错误信息
die("不能克隆".mysql_error());
}
//由类的自身来进行实例化
public static function getInstance(){
if(!(self::$_instance instanceof self)){
self::$_instance = new self();
}
return self::$_instance;
}
public function connect(){
self::$_dbConnect = @mysql_connect($this->_dbConfig['host'],
$this->_dbConfig['user'],$this->_dbConfig['password']);
if(!self::$_dbConnect){
die("数据库连接出错".mysql_error());
}
// 设置编码
mysql_query("SET NAMES UTF8");
// 连接数据库
mysql_select_db($this->_dbConfig['database'],self::$_dbConnect);
return self::$_dbConnect;
}
}
$res = Db::getInstance();
var_dump($res);
END
技术以内 | 技术以外
技术栈 | 小感悟
效率工具 | 必备技能
你的效率有多高,决定你能跑多快
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有