一、什么是单例模式?
什么是单例模式?
根据这个名称,我们很容易了解到,单例模式指的是在整个应用中只有一个对象实例的设计模式。
为什么要用单例模式?
php常常和数据库打交道,如果在应用中如果频繁建立连接对象,进行new操作的话,会消耗大料的系统内存资源,这并不是我们希望看到的。再则,在团队合作项目中,单例模式可以有效避免不同程序员new自己的对象,造成人为的系统消耗。
二、使用步骤
1.编写DB类文件
代码如下(示例):
<?php
header("content-type:text/html;charset=utf-8");
class Db{
//私有静态属性
static private $_instance;
static private $_connectSource;
//配置数据
private $_dbConfig = array(
'host' => '地址',
'user' => '账号',
'password' => '密码.',
'database' =>'数据库',
);
/**
* @Notes:构造方法
* @Author: Kevin
* @Wx: mx216972
* @Time: 2021/12/28 10:05
*/
private function __construct(){
}
/**
* @Notes:私有克隆 防止多次New
* @Author: Kevin
* @Wx: mx216972
* @Time: 2021/12/28 10:06
*/
private function __clone(){
}
/**
* @Notes:公用的静态方法
* @Author: Kevin
* @Wx: mx216972
* @Time: 2021/12/28 10:10
*/
static public function getInstance(){
if(!(self::$_instance instanceof self)){
self::$_instance = new self();
}
return self::$_instance;
}
/**
* @Notes:链接数据库
* @Author: Kevin
* @Wx: mx216972
* @Time: 2021/12/28 10:02
*/
public function connect(){
if(!self::$_connectSource){
self::$_connectSource = mysql_connect($this->_dbConfig['host'],$this->_dbConfig['user'],$this->_dbConfig['password']);
if(!self::$_connectSource){
die('mysql error'.mysql_error());
}
mysql_select_db($this->_dbConfig['database'],self::$_connectSource);
mysql_query("set names UTF8",self::$_connectSource);
}
return self::$_connectSource;
}
/**
* 执行语句
* @param
* @return string or int
*/
public function query($sql){
$query=mysql_query($sql);
return $query;
}
/**
* 查询某个字段
* @param
* @return string or int
*/
public function getOne($sql){
$query=$this->query($sql);
return mysql_result($query,0);
}
}
?>
2.使用例子
代码如下(示例):
<?php
/**
* @Notes:查询数据/Demo
* @Author: Kevin
* @Wx: mx216972
* @Time: 2021/12/28 10:31
*/
//引入类文件
include './Db.php';
//实例化类方法链接数据库
$Db = Db::getInstance();
$connect = $Db->connect();
$userid = 1;
$sql = 'select sum(id) as kqdays from admin where userid='.$userid;
$sumDay = $Db->getOne($sql);
var_dump($sumDay);die;
?>
总结
什么是单例模式?根据这个名称,我们很容易了解到,单例模式指的是在整个应用中只有一个对象实例的设计模式。
为什么要用单例模式?
php常常和数据库打交道,如果在应用中如果频繁建立连接对象,进行new操作的话,会消耗大料的系统内存资源,这并不是我们希望看到的。再则,在团队合作项目中,单例模式可以有效避免不同程序员new自己的对象,造成人为的系统消耗。