2011-06-24 28 views
2

我想知道別人怎麼看待他們。PHP中的靜態類不良習慣嗎?

(「靜態類」我的意思是一個類,其所有的功能和變量是靜態的)。

我發現它們非常實用。我有這個通過$ Db訪問的PDO自定義類,並且必須在每個必須對數據庫進行查詢的函數上使用「全局$ Db」。

我剛剛發現了關於靜態類以及它們如何不需要在函數中使用的方法。我使PDO類成爲一個靜態類,從使用它的函數中刪除所有「全局$ Db」,並將其命名爲DB :: function(),它和以前一樣工作,沒有問題,而且我也不會有從現在起到「全球$ Db」。我很想和我經常使用的其他課程一樣。

所以我覺得這太好了,不是一件好事。或者是?

+1

@Gordon分享了這是一個非常有趣的博客帖子幾天就回來:http://kore-nordmann.de/blog/0103_static_considered_harmful.html –

回答

0

要在PHP中做類似的事情,您可以使用單例靜態函數在整個代碼中爲類運行一個對象的單個實例。

class MyClass 
{ 
    private static $s_instance; 

    public static function getInstance() 
    { 
     if (!self::$s_instance) 
     { 
      self::$s_instance = new MyClass(); 
     } 

     return self::$s_instance; 
    } 

    private function __construct(...) { ... } 

    // All your non-static stuff 

} 
+0

請問這個回答OP的問題嗎? –

+0

@Pekka「我有這個PDO的自定義類,我通過$ Db訪問過,而且我必須在每個必須對數據庫進行查詢的函數上使用」全局$ Db「。」,「我剛剛發現了關於靜態類和他們如何不需要在功能上形成一致。「我提供了一個適合這些描述的類似概念,因爲您可以從任何函數調用getInstance來返回單例對象。靜態類也是更值得推薦的。 – Manhim