当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP中的单例只在整个页面周期内唯一

PHP
让我们来编写一些PHP实用的脚本
七种缓存使用武器 为网站应用和访问加速
动态网页PHP中引用&的使用注意事项
在PHP中全面阻止SQL注入式攻击
PHP自带可以代替echo调试的unit函数
小结:PHP动态网页程序优化及高效提速问题
php对特殊语句查询结果进行数组排序
实例:用PHP技术解决网站URL格式过长的问题
小结:PHP动态网页程序两个有用的小技巧
动态网页中直接不让访问PHP程序文件
网页实例:详细介绍用PHP来编写网页记数器
菜鸟学习:动态网页PHP基础学习笔记
利用Apache实现禁止图片盗链
PHP编程中常用的三则技巧
PHP制作的网站意见在线反馈表
大型Web需求解决方案 PHP定位突出
PHP实例:精确到每一秒钟的在线人数显示代码
实用:动态网页制作技术PHP的十个应用技巧
常见php页面漏洞分析及相关问题解决
PHP和MYSQL制作动态网站开发经验之谈

PHP中的单例只在整个页面周期内唯一


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 35 ::
收藏到网摘: n/a

单例模式的存在在一些情况下是比较有意义的,如BlogEngine的站点配置就是采用的单例模式,而且它的载入和保存的代码是相当经典的,有兴趣可以看看它的源代码。

由于asp.net是编译型的,所以单例一直会存在于这个应用程序的生命周期里,真正可以做到这个实例在应用程序生命周期中的唯一性。

php的单例模式的实现大致如下:

class Stat{  
    static $instance = NULL;
    static function getInstance(){  
        if(self::$instance == NULL){  
            self::$instance = new Stat();  
        }  
        return self::$instance;  
    }  
      
    private function __construct(){  
    }  
      
    private function __clone(){  
    }      
    function sayHi(){  
        return "The Class is saying hi to u ";  
    }  
}  
echo Stat::getInstance()->sayHi(); 
class Stat{
    static $instance = NULL;
    static function getInstance(){
        if(self::$instance == NULL){
            self::$instance = new Stat();
        }
        return self::$instance;
    }
    private function __construct(){
    }
   
    private function __clone(){
    }
    function sayHi(){
        return "The Class is saying hi to u ";
    }
}
echo Stat::getInstance()->sayHi();

但,PHP是一种解释型的语言,在这里用单例好像看不出实际的用处,一旦整个页面执行完,变量也就消失了。

static function getInstance(){  
       if(self::$instance == NULL){  
           self::$instance = new Stat();  //这里随着页面的重载会再次执行  
       }  
       return self::$instance;  
   } 
 static function getInstance(){
        if(self::$instance == NULL){
            self::$instance = new Stat();  //这里随着页面的重载会再次执行
        }
        return self::$instance;
    }

我接触PHP时间不长,以上写出来的只是在C#与PHP二种不同语言环境下对单例模式的认知,也许这个例子只是为了说明模式可以用很多种语言来实现,但并不意味着在各种语言环境下都能真正起作用。

asp.net中的单例是在整个应用程序域唯一。PHP中的单例只在整个页面周期内唯一