PHP中数据库单例模式的实现代码分享_php实例

首先我们要知道明确单例模式这个概念,那么什么是单例模式呢?

单例模式顾名思义,就是只有一个实例。

作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类我们称之为单例类。

单例模式的要点有三个:

一是某个类只能有一个实例;
二是它必须自行创建这个实例;
三是它必须自行向整个系统提供这个实例。

下面我们讨论下为什么要使用PHP单例模式?

多数人都是从单例模式的字面上的意思来理解它的用途, 认为这是对系统资源的节省, 可以避免重复实例化, 是一种"计划生育". 而PHP每次执行完页面都是会从内存中清理掉所有的资源. 因而PHP中的单例实际每次运行都是需要重新实例化的, 这样就失去了单例重复实例化的意义了. 单单从这个方面来说, PHP的单例的确有点让各位失望. 但是单例仅仅只有这个功能和应用吗? 答案是否定的,我们一起来看看。

1. php的应用主要在于数据库应用, 所以一个应用中会存在大量的数据库操作, 在使用面向对象的方式开发时(废话), 如果使用单例模式, 则可以避免大量的new 操作消耗的资源。

2. 如果系统中需要有一个类来全局控制某些配置信息, 那么使用单例模式可以很方便的实现. 这个可以参看zend Framework的FrontController部分。

3. 在一次页面请求中, 便于进行调试, 因为所有的代码(例如数据库操作类db)都集中在一个类中, 我们可以在类中设置钩子, 输出日志,从而避免到处var_dump, echo。

class db {
  public static $cennct = null;
  private function __construct(){return false;}
  private function conn(){
    $pdo = new PDO('mysql:host=localhost;dbname=dbname','root','');
    $pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
    $pdo->query('set names utf8');
    return $pdo;
  }
  public static function getdb(){
    if(self::$cennct == null )
      self::$cennct = self::conn();
      return true;
  }
  protected function fetch($sql,$param=array()){
    $this->getdb();
    $tmp = self::$cennct->prepare($sql);
    $tmp->execute($param);
    return $tmp->fetch(PDO::FETCH_ASSOC);
  }
  protected function fetchAll($sql,$param=array()){
    $this->getdb();
    $tmp = self::$cennct->prepare($sql);
    $tmp->execute($param);
    return $tmp->fetchAll(PDO::FETCH_ASSOC);
  }
  protected function execute($sql,$param=array()){
    $this->getdb();
    $tmp = self::$cennct->prepare($sql);
    return $tmp->execute($param);
  }
}

以上为一个数据库操作单例模式

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php
数据库单例模式
数据库连接单例模式、php 数据库单例模式、数据库单例模式、单例模式数据库连接池、单例模式的数据库连接,以便于您获取更多的相关知识。

时间: 2025-01-21 11:29:02

PHP中数据库单例模式的实现代码分享_php实例的相关文章

使用PHPMailer实现邮件发送代码分享_php实例

发送邮件是常用的功能,LZ今天在项目中也碰到了,特此分享一下. 首先,去下载PHPMailer 1.https://github.com/dwqs/PHPMailer 2.http://download.csdn.net/detail/u011043843/8063583 下载之后,将文件解压到项目目录的对应位置,将class.phpmailer.php和class.smtp.php引入项目中,看代码:(解压的文件不要删除,否则不行) <?php // 必要导入 require("clas

php等比例缩放图片及剪切图片代码分享_php实例

php等比例缩放图片及剪切图片代码分享 /** * 图片缩放函数(可设置高度固定,宽度固定或者最大宽高,支持gif/jpg/png三种类型) * Author : Specs * * @param string $source_path 源图片 * @param int $target_width 目标宽度 * @param int $target_height 目标高度 * @param string $fixed_orig 锁定宽高(可选参数 width.height或者空值) * @ret

PHP Web木马扫描器代码分享_php实例

不废话了,直接贴代码了. 代码如下: <?php header('content-type:text/html;charset=gbk'); set_time_limit(0);//防止超时 /** * * php目录扫描监控增强版 * * @version 1.0 * 下面几个变量使用前需要手动设置 * **/ /*===================== 程序配置 =====================*/ $pass="test";//设置密码 $jkdir=&quo

PHP中实现crontab代码分享_php实例

1. 准备一个标准crontab文件 ./crontab 复制代码 代码如下: # m h dom mon dow command * * * * * date > /tmp/cron.date.run 2. crontab -e 将此cron.php脚本加入系统cron 复制代码 代码如下: * * * * * /usr/bin/php cron.php 3. cron.php 源码 复制代码 代码如下: // 从./crontab读取cron项,也可以从其他持久存储(mysql.redis)

PHP实现Javascript中的escape及unescape函数代码分享_php实例

这个类相当好用.作用么,PHP做JSON传递GBK字符,比如中文,日文,韩文神马的Unicode最合适不过了.. <?php classcoding { //模仿JAVASCRIPT的ESCAPE和UNESCAPE函数的功能 functionunescape($str) { $text=preg_replace_callback("/%u[0-9A-Za-z]{4}/",array( &$this, 'toUtf8' ),$str); returnmb_convert_e

PHP实现的多彩标签效果代码分享_php实例

目前,大家的博客左侧通常加上一个漂亮的多彩标记,也想给自己的小站加一下这个小功能. 可惜已经再不再是使用WordPress的时候那么方便了,使用WordPress的朋友们直接使用现成的插件,鼠标点点就可以加上这个炫彩的功能.小站程序是自个写的,要加这么一个功能还是得自己动手,就当学习吧! 首先,我分析了一下目前多彩标签的主要表现形式,主要有两点:颜色多样,大小不一.这个是多彩标签的特性,于是想到了PHP中的随机函数rand.直接给大小,颜色用rand随机取值就可以. 大小的随机值容易搞定,直接生

php按百分比生成缩略图的代码分享_php实例

于是翻了一下手册,弄懂几个函数后自己写了一个简单的php生成缩略图的程序.没有用类,我觉得一个函数就能搞定,而且对于新手来说更容易去理解,从而可以帮助到更多的人. 支持按比分比缩略,支持按指定的长宽缩略,默认按百分比.程序中注释已经很详细了,如有问题可在下面留言,欢迎与我交流. 源码如下: 复制代码 代码如下: <?php  /*  * param ori_img 原图像的名称和路径  * param new_img 生成图像的名称  * param percent 表示按照原图的百分比进行缩略

php分页函数示例代码分享_php实例

分享一例php分页函数代码,用此函数实现分页代码很不错. 代码,php分页函数. 复制代码 代码如下: <?php/** Created on 2011-07-28* Author : LKK , http://lianq.net* 使用方法:require_once('mypage.php');$result=mysql_query("select * from mytable", $myconn);$total=mysql_num_rows($result);    //取得

PHP抽奖算法程序代码分享_php实例

抽奖算法需要满足的需求如下: 1.可以控制中奖的概率 2.具有随机性 3.最好可以控制奖品的数量 4.根据用户ID或者ip.手机号.QQ号等条件限制抽奖次数 初期就这些需求,然后根据网上的资料,采用了一种阶段式抽取的方法,大家下面看一下整体的程序: 该程序是在ThinkPHP框架下完成的,使用了一些框架自带的类库和函数,下面我会逐一进行说明,控制器部分:代码如下 <?php /** * * * @lanfengye <zibin_5257@163.com> */ class Chouji