当前位置: 首页 > 编程笔记 >

PHP单例模式详细介绍

商燕七
2023-03-14
本文向大家介绍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  单例模式详细介绍及实现源码,包括了php  单例模式详细介绍及实现源码的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了PHP中数据库单例模式的实现代码分享,本文先是讲解了单例模式的一些知识,然后给出了数据库单例模式实现代码。 什么是单例模式 单例模式顾名思义,就是只有一个实例。 作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提

  • 本文向大家介绍java  BASE64Encoder详细介绍及简单实例,包括了java  BASE64Encoder详细介绍及简单实例的使用技巧和注意事项,需要的朋友参考一下 java  BASE64Encoder详解 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,在发送电子邮件时,服务器认证的用户名和密码需要用Base64编码,附件也需要用Base64编码。 Base64要

  • 本文向大家介绍PHP中单例模式与工厂模式详解,包括了PHP中单例模式与工厂模式详解的使用技巧和注意事项,需要的朋友参考一下 单例模式概念 单例模式是指整个应用中类只有一个对象实例的设计模式。 单例模式的特点 一个类在整个应用中只有一个实例 类必须自行创建这个实例 必须自行向整个系统提供这个实例 php中使用单例模式的原因 我用php大部分操作都是和各种数据库打交道,包括mysql,redis,me

  • 本文向大家介绍Activity 四种启动模式详细介绍,包括了Activity 四种启动模式详细介绍的使用技巧和注意事项,需要的朋友参考一下 Activity 四种启动模式详细介绍 在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。 Android总Acti

  • 本文向大家介绍PHP中的Streams详细介绍,包括了PHP中的Streams详细介绍的使用技巧和注意事项,需要的朋友参考一下 Streams 是PHP提供的一个强有力的工具,我们常常在不经意会使用到它,如果善加利用将大大提高PHP的生产力。 驾驭Streams的强大力量后,应用程序将提升到一个新的高度。 下面是PHP手册中对Streams的一段描述: 每个Streams对象都有一个包装类,在包装

  • 本文向大家介绍PHP ignore_user_abort函数详细介绍和使用实例,包括了PHP ignore_user_abort函数详细介绍和使用实例的使用技巧和注意事项,需要的朋友参考一下 ignore_user_abort 设置与客户机断开是否会终止脚本的执行。 本函数返回 user-abort 设置的之前的值(一个布尔值)。 int ignore_user_abort ([ string $