2014-09-24 63 views
0

我正在尋找一種類模式,它可以幫助我獲取Smarty的全局實例,並在所有應用程序生命週期中使用它。 我試圖用這樣的單身Ø出廠單例模式:全球Smarty實例的設計模式

final class Personal_Smarty 
{ 
    static private $instance; 

    private function __construct() {} 

    static public function instance() 
    { 
     if(!isset(self::$_instance)) 
     { 
       $smarty = new Smarty(); 

       self::$instance = $smarty; 
     }; 
     return self::$instance; 
    } 

} 

,但我認爲這不是我所需要的,因爲我需要所有的應用程序生命週期內僅有一次創建一個Smarty的實例(所以不希望被迫爲每個請求創建一個Smarty實例)。

有沒有很好的方法來做到這一點? 我不確定這是否是一個很好的做法,以及我是否會遇到問題。你怎麼看? 我的問題的原因是,我認爲爲我使用的每個PHP腳本創建smarty實例可能是繁重的(開銷),但也許這只是我的想法。

+1

你是什麼意思的每個腳本?你是否試圖讓這個實例通過多個請求? – andy 2014-09-24 15:31:10

+0

你在找什麼叫Singleton。但使用它們是一個非常糟糕的主意,所以不要這樣做。 – GordonM 2014-09-24 15:31:20

+0

@GordonM爲什麼單身人士會是一個非常糟糕的主意? – andy 2014-09-24 15:32:39

回答

1

跨不同請求共享數據的唯一方法是將其存儲在session中。但是,會話中的數據也需要存儲和加載,這就是爲什麼在會話中存儲類實例並不是一個好主意。

基本上,你的假設創建一個聰明的實例是一個性能問題是不正確的。