研究php单例模式实现数据库类
实现单例模式:单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。
单例模式的逻辑:类里面声明一个静态的方法和变量,静态变量用来存储唯一的实例,静态方法作为类向外的唯一的接口,并在里面做判断,当静态变量有实例时候直接返回,没有则new一个实例赋值在静态变量里面。构造函数里面放链接数据库的操作,因为静态方法中实现了控制了只实例化一次,所以达到只链接数据库一次。在类外部访问静态方法;
简单类如下:
class Con_db{
private static $dbObj = null;
private $con;
private $result;
private $row;
private $newsItem;
/**
* 构造函数
* @param [type] $host [数据库地址]
* @param [type] $username [数据库名称]
* @param [type] $psw [数据库密码]
* @param [type] $database [数据库]
*/
private function __construct($host,$username,$psw,$database){
$this->con = mysql_connect($host,$username,$psw);
if(!$this->con){
die("链接失败");
}
mysql_set_charset("utf-8");
mysql_select_db($database);
}
/**
* 获取一次性对象
* @return 实例对象
*/
public static function getInstance($host,$username,$psw,$database){
if(is_null(self::$dbObj)){
self::$dbObj = new self($host,$username,$psw,$database);
}
return self::$dbObj;
}
/**
* 数据库查询语句
*/
private function query($sql){
if($sql){
$this->result = mysql_query($sql);
if($this->result && mysql_num_rows($this->result)){
return $this->result;
}else{
return false;
}
}else{
die("必须填写查询语句!");
}
}
/**
* 查询多条语句
* @param $sql 查询语句
* return string;
*/
private function getAll($sql){
$this->result = mysql_query($sql);
if($this->result && mysql_num_rows($this->result)){
$this->newsItem = array();
while($this->row = mysql_fetch_assoc($this->result)){
$this->newsItem[] = $this->row;
}
}
return $this->newsItem;
}
/**
* 查询一条语句
* @param $sql 查询语句
* return string;
*/
private function getone($sql){
$this->result = mysql_query($sql);
if($this->result && mysql_num_rows($this->result)){
return $this->row = mysql_fetch_assoc($this->result);
}
}
}
$db = Con_db::getInstance("localhost","root","root","szwengdo_com");
$sql = "select * from wd_cases";
$row = $db->getone($sql);
var_dump($row);
第一次研究,希望改正!!
研究php单例模式实现数据库类的更多相关文章
- PHP用单例模式实现一个数据库类
使用单例模式的出发点: 1.php的应用主要在于数据库应用, 所以一个应用中会存在大量的数据库操作, 使用单例模式, 则可以避免大量的new 操作消耗的资源. 2.如果系统中需要有一个类来全局控制某些 ...
- 设计模式 - 单例模式mysql数据库操作类
待续... index.php 调用方法: <?php header('Content-Type:text/html; charset=utf8'); require 'instance.php ...
- Dedesql数据库类详解
今天花点时间讲解下织梦的sql数据库类,近期本来是准备录制一套视频教程的,但由于视频压缩的问题迟迟没有开展工作,如果大家有什么好的视频压缩方式可以通过邮件的方式告诉我:tianya#dedecms.c ...
- 孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数
孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 不同类型 ...
- PHP基于单例模式编写PDO类的方法
一.单例模式简介 简单的说,一个对象(在学习设计模式之前,需要比较了解面向对象思想)只负责一个特定的任务: 二.为什么要使用PHP单例模式? 1.php的应用主要在于数据库应用, 所以一个应用中会存在 ...
- Dedesql数据库类详解(二次开发必备教程)
其实数据库类织梦之前就有一个介绍,http://help.dedecms.com/v53/archives/functions/db/,这篇文章讲解了数据库类的一些常见的使用方法,不过没有结合例子去介 ...
- phpcms 源码分析四: 数据库类实现
这次是逆雪寒的数据库类分析: <?php /* 这个讲 phpcms 的数据库类 和 phpcms 的文本缓存的实现.看了看 都是很简单的东西.大家看着我注释慢慢看吧.慢慢理解,最好能装了PHP ...
- php备份数据库类分享
本文实例讲述了php实现MySQL数据库备份类.分享给大家供大家参考.具体分析如下:这是一个非常简单的利用php来备份mysql数据库的类文件,我们只要简单的配置好连接地址用户名与数据库即可 ph ...
- Python一个简单的数据库类封装
#encoding:utf-8 #name:mod_db.py '''使用方法:1.在主程序中先实例化DB Mysql数据库操作类. 2.使用方法:db=database() db.fet ...
随机推荐
- dependent-name ‘xxx::yyy’ is parsed as a non-type, but instantiation yields a type
简言之,就是说你该用typename的地方没用typename,如以下代码 template<class Cont> void frontInsertion(Cont& ci) { ...
- Git和Repo管理使用简要介绍
在Linux平台下进行Android系统项目开发时,需要Git或repo管理. 一. Git和Repo的区别: 1. Git:Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的 ...
- Ubuntu 12.04 Subversion及GUI客户端RabbitVCS安装
(经过一天的使用,发现pygtk的内存泄漏问题严重影响使用,需要打一下deepin ui做的补丁:https://github.com/linuxdeepin/deepin-ui) 1. 类似Tort ...
- [Eth]网络查看命令:route
最近在调试网络,出现问题,两个网口分别接外网内网,结果不同 http://www.cnblogs.com/peida/archive/2013/03/05/2943698.html
- 个别图片IE中无法显示问题
今天有人保障,某些图片在IE下无法打开,但是其他浏览器均没有问题.以前还真没遇到过这类问题,从上至下查看了一遍,能排除的因素基本都排除了,还是不知道为什么不能显示,真是奇怪了.最后注意到无法显示的图片 ...
- wrk -- 小巧轻盈的 http 性能测试工具.
标签: wrk http 性能 | 发表时间:2015-06-21 00:55 | 作者:zjumty 出处:http://www.iteye.com 测试先行是软件系统质量保证的有效手段. 在单元测 ...
- 关于Unity中的摄像机
摄像机是挂载Camera组件的能把3D世界物体拍摄成2D画面显示到屏幕上面的节点,角度不一样,位置不一样,拍摄出来的东西就不一样. Clear Flags:没有物体的时候,摄像机拍摄出的屏幕要绘制什么 ...
- 采样方法(Sampling Methods)
1.基本采样算法(Basic Sampling Algorithms) 1.1.标准概率分布(Standard distributions) 1.2.拒绝采样(Rejection sampling) ...
- Abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性
Abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性. Abstract虽然不能生成对象,但是可以声明,作为编译时类型,但不能作为运行时类型. Final和abstrac ...
- 【NOIP模拟题】Permutation(dp+高精度)
首先我们可以这样想: 设状态f[i, j]表示1-i序列有j个'<'的方案数 那么考虑转移 因为i比i-1大,所以可以考虑从i-1来转移.首先i是要插入1-i-1这个序列的,所以我们可以思考插入 ...