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

单例模式在一些情况下是比较有意义的,例如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中单例只在整个页面周期内唯一。所以,大家可要分清楚所处环境对于效果的影响!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值