程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP入門知識 >> PHP中的單例只在整個頁面周期內唯一

PHP中的單例只在整個頁面周期內唯一

編輯: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中的單例只在整個頁面周期內唯一

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved