Heim > php教程 > php手册 > PHP单例:只在整个页面周期内唯一

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

WBOY
Freigeben: 2016-06-21 08:57:22
Original
856 Leute haben es durchsucht

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

单例模式的存在在一些情况下是比较有意义的,如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中的单例只在整个页面周期内唯一



Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage