PHP单例模式详细介绍

 更新时间:2015年07月01日 15:45:51   投稿:junjie  
这篇文章主要介绍了PHP单例模式详细介绍,本文讲解了单例模式的概念、单例模式的特点、使用单例模式的原因及场景及PHP单例模式代码实例,需要的朋友可以参考下

单例模式的概念

单例模式是指整个应用中某个类只有一个对象实例的设计模式。具体来说,作为对象的创建方式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局的提供这个实例。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。

单例模式的特点

单例模式的主要特点是“三私一公”:
需要一个保存类的唯一实例的私有静态成员变量
构造函数
必须声明为私有的,防止外部程序new一个对象从而失去单例的意义
克隆函数必须声明为私有的,防止对象被克隆
必须提供一个访问这个实例的公共静态方法(通常命名为getInstance),从而返回唯一实例的一个引用。

使用单例模式的原因及场景

在PHP的大多数应用中都会存在大量的数据库操作,如果不用单例模式,那每次都要new操作,但是每次new都会消耗大量的系统资源和内存资源,而且每次打开和关闭数据库都是对数据库的一种极大考验和浪费。所以单例模式经常用在数据库操作类中。
同样,如果系统中需要有一个类来全局控制某些配置信息,那使用单例模式可以很方便的实现。

PHP单例模式实现

下面是一个PHP单例模式实现数据库操作类的框架

<?php
 class Db{
 const DB_HOST='localhost';
 const DB_NAME='';
 const DB_USER='';
 const DB_PWD='';
 private $_db;
 //保存实例的私有静态变量
 private static $_instance;
 //构造函数和克隆函数都声明为私有的
 private function __construct(){
  //$this->_db=mysql_connect();
 }
 private function __clone(){
  //实现
 }
 //访问实例的公共静态方法
 public static function getInstance(){
  if(!(self::$_instance instanceof self)){
  self::$_instance=new self();
  }
  //或者
  if(self::$_instance===null){
  self::$_instance=new Db();
  }
  return self::$_instance;
 }
 public function fetchAll(){
  //实现
 }
 public function fetchRow(){
  //实现
 }
 }
 //类外部获取实例的引用
 $db=Db::getInstance();
?>

相关文章

  • laravel框架邮箱认证实现方法详解

    laravel框架邮箱认证实现方法详解

    这篇文章主要介绍了laravel框架邮箱认证实现方法,结合实例形式详细分析了laravel框架邮箱认证功能的具体实现步骤及相关操作技巧,需要的朋友可以参考下
    2019-11-11
  • laravel中的一些简单实用功能

    laravel中的一些简单实用功能

    这篇文章主要给大家介绍了关于laravel中一些简单实用功能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Smarty变量用法详解

    Smarty变量用法详解

    这篇文章主要介绍了Smarty变量用法,结合实例形式分析了php分配变量与配置文件读取变量的具体使用方法,需要的朋友可以参考下
    2016-05-05
  • PHP使用curl制作简易百度搜索

    PHP使用curl制作简易百度搜索

    这篇文章主要为大家详细介绍了PHP使用curl制作简易百度搜索的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • php 人员权限管理(RBAC)实例(推荐)

    php 人员权限管理(RBAC)实例(推荐)

    下面小编就为大家带来一篇php 人员权限管理(RBAC)实例(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • thinkPHP5框架渲染模板的3种方式简述

    thinkPHP5框架渲染模板的3种方式简述

    这篇文章主要介绍了thinkPHP5框架渲染模板的3种方式,结合实例形式分析了thinkPHP5框架控制器渲染、view助手函数及继承think\Controller类三种方式的实现方法,需要的朋友可以参考下
    2017-11-11
  • php版微信开发Token验证失败或请求URL超时问题的解决方法

    php版微信开发Token验证失败或请求URL超时问题的解决方法

    这篇文章主要介绍了php版微信开发Token验证失败或请求URL超时问题的解决方法,简单分析了Token验证失败及请求URL超时的原因及相关解决方法,需要的朋友可以参考下
    2016-09-09
  • PHP 微信扫码支付源代码(推荐)

    PHP 微信扫码支付源代码(推荐)

    本文给大家介绍php微信扫码支付的源代码,代码中包含四个文件createUrl.php、ArrayToXML.php、returnGoodsUrl.php、notifyUrl.php。具体详细代码大家参考下本文吧
    2016-11-11
  • 一个php导出oracle库的php代码

    一个php导出oracle库的php代码

    红色字为变量,我也是边查手册边写的,以前没有接触过,这段小代码用了一个多小时,记录一下
    2009-04-04
  • PHP实现的多彩标签效果代码分享

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

    这篇文章主要介绍了PHP实现的多彩标签效果代码分享,经常可以看到一些博客中的标签(TAGS)页面是彩色的效果展现,本文就给出了实现这个功能的PHP代码,需要的朋友可以参考下
    2014-08-08

最新评论