研究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 ...
随机推荐
- django中ModelForm save方法 以及快速生成空表单或包含数据的表单 包含错误信息
django中ModelForm学习系列一~save方法 Model代码 from django.db import models # Create your models here. class P ...
- tableview 与 tableview cell
1.tableview cell: import Foundationimport UIKit class CjwtCell: UITableViewCell { @IBOutlet var lb_c ...
- la4730(并查集+树状数组)
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=30& ...
- jquery头文件的引入
<script type="text/javascript" src="/library/js/jquery/jquery-1.9.1.min.js"&g ...
- .NET Standard - 揭秘 .NET Core 和 .NET Standard[转自MSDN]
作为 .NET 系列的最新成员,.NET Core 和 .NET Standard 的概念及其与 .NET Framework 的区别并不十分明确.在本文中,我将准确介绍每个产品及其适用场景. 在详细 ...
- Android——保存和恢复用户状态
onSaveInstanceState 保存 在暂停之后和保存之前调用 onRestoreInstanceState 恢复 再启动之后和显示之前调用 package com.example.chens ...
- 使用shell读取文本文件发送到kafka
#!/bin/sh ## 参数定义 dt=`date +"%Y%m%d" -d "-1 days"` outpath=/xxxx_log_${dt}.txt b ...
- memcached server LRU 深入分析
Memcached,人所皆知的remote distribute cache(不知道的可以javaeye一下下,或者google一下下,或者baidu一下下,但是鉴于baidu的排名商业味道太浓(从最 ...
- 个别图片IE中无法显示问题
今天有人保障,某些图片在IE下无法打开,但是其他浏览器均没有问题.以前还真没遇到过这类问题,从上至下查看了一遍,能排除的因素基本都排除了,还是不知道为什么不能显示,真是奇怪了.最后注意到无法显示的图片 ...
- dlib python 人脸检测与关键点标记
http://blog.csdn.net/sunmc1204953974/article/details/49976045 人脸检测 #coding=utf-8 # -*- coding: utf-8 ...