php单件模式

Discuz X将uchome,dz 的部分代码进行了重写,抛弃了原有产品的common.inc.php,而采用类的形式,运用了设计模式中的单件模式。

Java代码  

  1. function &instance() {  
  2.     static $object;  
  3.     if(empty($object)) {  
  4.         $object = new discuz_core();  
  5.     }  
  6.     return $object;  
  7. }  
  8. /* 
  9. # $pig1 = PHPig::instance();    
  10. # $pig2 = PHPig::instance();    
  11. # if($pig1 === $pig2) {    
  12. #     echo '同一个对象';    
  13. # } else {    
  14. #     echo '不是同一个对象';    
  15. # }  
  16. */  

 “&”:为了兼容PHP4,PHP5使用static 
创建类对象:$discuz = & discuz_core::instance();
用单件模式创建新实例,保证一次有效连接只生成一个实例,并且保证开发途中不会二次创建实例。

Java代码  

  1. function &object() {  
  2.     static $db;  
  3.     if(empty($db)) {  
  4.         $db = new db_mysql();  
  5.     }  
  6.     return $db;  
  7. }  

 

时间: 2024-10-31 10:28:30

php单件模式的相关文章

php单件模式的简单例子

单件模式即singleton pattern(属于创建型设计模式),最适合解释的例子就是日志记录了.其他模式的php代码以后写好了在分享给大家,希望可以增加点大家对php中设计模式的概念. 复制内容到剪贴板 代码: <?php/** 1.Singleton Pattern for the log of application* 2.建议将类文件名写成class.log.php* 以便__autoload()自动载入该类* 3.Author:NoAngels* 4.E-mail:flare_102

一番话:单件模式

单件模式如epower斑竹所转帖子中写的那样,是用来创建一个需要全局唯一实例的模式.只是需要纠正一点.singleton模式中,构造函数应该是protected.这样子类才可以扩展这个构造函数.单件模式主要应用在以下场合:对于一个类,占用的系统资源非常多.而且这些资源可以被全局共享,则可以设计为singleton模式,强迫全局只有一个实例对于一个类,需要对实例进行计数.可以在createInstance中进行并可以对实例的个数进行限制.对于一个类,需要对其实例的具体行为进行控制,例如,期望返回的

.NET中的设计模式二:单件模式

设计 单件模式(Singleton)是一个非常简单的模式,这是我第一个理解并且能运用的模式.有时候模式的复杂程度并不在于本身,而是由于他的应用目的.最初的时候面对一个模式经常充满了困惑,一个简单的调用为什么要搞的如此复杂?为什么要建立这么多类,只是为了打开一个文件. 通常说来学习一个模式是一个接受.认可.领会的过程.接受:了解模式的结构,了解实例的意义:认可:认可该模式在实际工程中的作用和可行性:领会:将模式应用到开发过程中. 而模式的应用目的说到底无非是为了降低模块之间在时间和空间上的耦合程度

设计模式之单件模式(Singleton Pattern )

设计 单件模式 Singleton Pattern Singleton 模式,它包含在创造性模式系列中. 创造性模式指示如何以及何时创建对象.Singleton 模式可以保证一个类有且只有一个实例,并提供一个访问它的全局访问点.在程序设计过程中,有很多情况需要确保一个类只能有一个实例.例如,系统中只能有一个窗口管理器.一个打印假脱机,或者一个数据引擎的访问点.PC机中可能有几个串口,但只能有一个COM1实例. 其结构如下: 我们可以定义一个Spooler类,实现Singleton 模式 Publ

设计模式应用实例之单件模式应用,和简单注入实现形式

上次写了基于MVC模式和Command模式构建系统架构,也做了一个简单的实例. 在把我想写的写完以后,我想通过一个具体的项目来串联大部分的设计模式思想. 今天我想说的是单件模式. 首先简单介绍下单件模式是什么东西,也称Singleton模式,实现单一实例的功能,不具体说了,不了解者看别的介绍概念性文章. 通常,在我做过的项目中,应用Singleton最多的就是做适配器,下面我会介绍如何做适配器. 先介绍通过通过单件模式,实现适配器产生单一实例的应用过程. 在介绍单件模式以前,我想先介绍下,面向服

PHP实现单件模式的几种方式

单件模式是我们在开发中经常用到的一种设计模式,利用PHP5面向对象的特性,我们可以很容易的构建单件模式的应用,下面是单件模式在PHP中的几种实现方法: class Stat{ static $instance = NULL; static function getInstance(){ if(self::$instance == NULL){ self::$instance = new Stat(); } return self::$instance; } private function __

PHP单件模式和命令链模式的基础知识

初学者对于设计模式肯定存在着很多不明白之处,今天刚好周末,就抽出来点时间写了一个单件模式结 合命令链模式打造系统核心的文章,可能对于部分人来说,文章内容过于浅显,这是送给初学者的教程,因为 时间比较紧(要陪老婆逛街,呵呵),其中出现了设计不规范的,代码书写不规范的,bug等等还望各路大侠指 出来,方便大家共同进步.本人水平有限.^_^ 相信大家都已经读过很多关于在PHP中应用设计模式的书籍或是文章,但是很少有直接给予实例,大部分 看完之后有种迷迷糊糊的感觉,如果没有项目实践,很难将设计模式部分弄

PHP设计模式介绍Ⅳ单件模式

  几乎所有面向对象的程序中,总有一两个资源被创建出来,在程序应用中持续被共享使用.例如,这样的一个资源,在一个电子商务程序的数据库连接中使用:这个连接在应用程序启动时初始化,程序于是可以有效的执行;当程序结束时,这个连接最终被断开并销毁.如果是你写的代码,没必要在每时每刻创建一个数据库连接,这样非常低效.已经建立好的连接应该能被你的代码简单重复的使用.这个问题就是,基于以上要求你将如何进行这个数据库连接?(或者连接其它被循环使用的唯一资源,比如一个开放文件或者一个队列.) 问题 你怎样确保一个

设计模式(二)单件模式Singleton(创建型)

SINGLETON(单件)-对象创建型模式        几乎所有面向对象的程序中,总有一些类的对象需要是唯一的,例如,通过数据库句柄到数据库的连接是独占的.您希望在应用程序中共享数据库句柄,因为在保持连接打开或关闭时,它是一种开销.再如大家最经常用的IM,如QQ,在同一台电脑,一个帐号只能有唯一的登录. 1. 问题 怎样确保一个特殊类的实例是独一无二的(它是这个类的唯一实例),并且这个实例易于被访问呢? 2. 解决方案 1)全局变量:一个全局变量使得一个对象可以被访问,但它不能防止你实例化多个