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();
?>

相关文章

  • php实现aes加密类分享

    php实现aes加密类分享

    这篇文章主要介绍了php实现的aes加密类,代码中有使用方法,需要的朋友可以参考下
    2014-02-02
  • php上传文件常见问题总结

    php上传文件常见问题总结

    这篇文章主要介绍了php上传文件常见问题总结,基本上经常碰到的问题的处理都列了出来,有需要的小伙伴参考下。
    2015-02-02
  • 关于Thinkphp6的日志问题

    关于Thinkphp6的日志问题

    这篇文章主要介绍了关于Thinkphp6的日志问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • PHP生成压缩文件实例

    PHP生成压缩文件实例

    这篇文章主要介绍了PHP生成压缩文件实例,本文直接给出实现代码,需要的朋友可以参考下
    2015-02-02
  • ThinkPHP5.1框架数据库链接和增删改查操作示例

    ThinkPHP5.1框架数据库链接和增删改查操作示例

    这篇文章主要介绍了ThinkPHP5.1框架数据库链接和增删改查操作,结合实例形式分析了thinkPHP5.1框架数据库连接的常用方式与针对数据库增删改查操作相关实现技巧,需要的朋友可以参考下
    2019-08-08
  • thinkPHP5框架auth权限控制类与用法示例

    thinkPHP5框架auth权限控制类与用法示例

    这篇文章主要介绍了thinkPHP5框架auth权限控制类与用法,结合实例形式分析了thinkPHP5框架扩展auth权限控制类的定义与使用方法,代码注释中备有较为详尽的使用说明与数据库操作语句,需要的朋友可以参考下
    2018-06-06
  • 回帖脱衣服的图片实现代码

    回帖脱衣服的图片实现代码

    其实原理就是通过php的session判断,发帖前后不同的session值进行判断,需要的朋友可以自由发挥下
    2014-02-02
  • PHP实现赛邮SUBMAIL简单易用短信通知实例

    PHP实现赛邮SUBMAIL简单易用短信通知实例

    这篇文章主要介绍了使用PHP实现赛邮SUBMAIL的简单易用短信通知实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • PHP SPL标准库之数据结构堆(SplHeap)简单使用实例

    PHP SPL标准库之数据结构堆(SplHeap)简单使用实例

    这篇文章主要介绍了PHP SPL标准库之数据结构堆(SplHeap)简单使用实例,本文还同时讲解了最大堆(SplMaxHeap)、最小堆(SplMinHeap)的相关知识,需要的朋友可以参考下
    2015-05-05
  • PHP stream_context_create()函数的使用示例

    PHP stream_context_create()函数的使用示例

    这篇文章主要介绍了PHP stream_context_create()函数的使用示例,stream_context_create()函数是用来 创建打开文件的上下文件选项,用于fopen(),file_get_contents()等过程的超时设置、代理服务器、请求方式、头信息设置的特殊过程,需要的朋友可以参考下
    2015-05-05

最新评论