php单例连接数据库
Posted 春暖花开
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php单例连接数据库相关的知识,希望对你有一定的参考价值。
mysql_connect() 后续的php就不支持了,所以会报错。
现在改为使用mysqli_connect(),需要开启php扩展哟!
<?php
/**
* 设计模式之单例模式
* $_instance必须声明为静态的私有变量
* 构造函数和析构函数必须声明为私有,防止外部程序new
* 类从而失去单例模式的意义
* getInstance()方法必须设置为公有的,必须调用此方法
* 以返回实例的一个引用
* ::操作符只能访问静态变量和静态函数
* new对象都会消耗内存
* 使用场景:最常用的地方是数据库连接。
* 使用单例模式生成一个对象后,
* 该对象可以被其它众多对象所使用。
*/
class Danli{
//保存类实例的静态成员变量
private static $_instance = null;
private $conn;
//private标记的构造方法
private function __construct(){
//$conn = new mysqli(‘localhost‘, ‘root‘, ‘123‘, ‘php37‘);
$this->conn = mysqli_connect(‘localhost‘, ‘root‘, ‘123‘, ‘php37‘);
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
}
//单例方法,用于访问实例的公共的静态方法
public static function getInstance(){
if(!self::$_instance instanceof self){
self::$_instance = new self;
}
return self::$_instance;
}
//创建__clone方法防止对象被复制克隆
private function __clone(){ }
// 防止析构函数被调用
// private function __destruct(){ }
}
//用new实例化private标记构造函数的类会报错
//$danli = new Danli();
//正确方法,用双冒号::操作符访问静态方法获取实例
$danli=Danli::getInstance();
var_dump($danli);
//$danli->test();
//复制(克隆)对象将导致一个E_USER_ERROR
//$danli_clone=clone $danli;
工作没找到,天天帮朋友解决问题倒成了我的正式。要努力找工作,加油······
以上是关于php单例连接数据库的主要内容,如果未能解决你的问题,请参考以下文章