单例模式的定义:保证一个类只有一个实例,并提供一个访问它的全局访问点。这就意味着这个类只实例化一次,并做好防止外部再次实例化的措施,比如克隆私有化,构造函数私有化,还要把实例化好的资源保存起来,供外部使用。
这样做的目的是减少内存的消耗,因为每实例化一次就会消耗一次内存。
单例模式连接MySQL
<?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防止用户newprivate function __construct(){}//重写clone防止用户进行clonepublic 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
技术以内 | 技术以外 技术栈 | 小感悟 效率工具 | 必备技能 你的效率有多高,决定你能跑多快![5c7225980a1c596637a08c7b9ee8c0c3.png](https://i-blog.csdnimg.cn/blog_migrate/84f67c7da8f7a9f9a54464273c9ffb57.png)