您的位置:首页 > 移动开发

PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [1] 单例模式连接数据库

2015-03-21 12:49 1216 查看
单例模式

单例模式三大原则:

① 构造函数需要标记为非 public (防止外部使用 new 操作符创建对象),单例类不能在其他类中实例化,只能被自身实例化;

② 拥有一个保存类的实例的静态成员变量 $_instance

③ 拥有一个访问这个实例的公共的静态方法

单例模式(参见 PHP 单例模式代码片段):

<?php
/*
* 单例模式
*/
class DB{
static private $_instance;
private function __construct(){
}

static public function getInstance(){
if(!self::$_instance instanceof self){
self::$_instance = new self();
}
return self::$_instance;
}
}


单例模式连接数据库:

<?php
/*
* 单例模式连接数据库
*/
class DB{
static private $_instance;    //非public的类的实例的静态成员变量
static private $_connectSource;    //连接数据库返回的资源句柄
private $_dbConfig = array(
'host'=>'127.0.0.1',
'username'=>'root',
'pwd'=>'',
'database'=>'chat'
);

private function __construct(){    //非public 的构造函数
}

static public function getInstance(){    //访问实例的公共静态方法
if(!self::$_instance instanceof self){
self::$_instance = new self();
}
return self::$_instance;
}

public function connect(){
if(!self::$_connectSource){
//连接mysql服务
self::$_connectSource = mysql_connect($this->_dbConfig['host'],$this->_dbConfig['username'],$this->_dbConfig['pwd']);
if(!self::$_connectSource){
die('mysql connect error'.mysql_error());
}
//选择数据库
mysql_select_db($this->_dbConfig['database'],self::$_connectSource);
//设置字符集
mysql_query('set names "UTF8"',self::$_connectSource);
}
return self::$_connectSource; //返回资源
}
}

$connect = DB::getInstance()->connect();
var_dump($connect);

$sql = 'select * from messages';
$res = mysql_query($sql,$connect);
$num = mysql_num_rows($res);
var_dump($num);


页面输出:

resource(3, mysql link)

int 2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐