2013-05-16 76 views
0

我的整個項目基本上分爲兩個部分:需要諮詢與設計 - 將靜態到正常的方法

  • 核心
  • 輔助類

用戶創建自己的自定義類,並會使用方法幫助類在那裏像:

\Project\System\Helpers\Class::foo(); 

因此,每個幫助中的每個公共方法類聲明爲靜態。我想出了一個主意,改變這種狀況,使所有用戶自定義類繼承一個特殊的類:

class SingleBeingInheritedClass { 
    public function helper($class) 
    { 
     return new \Project\System\Helpers\$class; // it's just to show the idea 
    } 
} 

讓而不是調用靜態功能,用戶可以寫:

$this->helper('class')->foo(); 

問題我在幾個核心類中使用了這些輔助類中的一些。我不希望核心類繼承與助手相關的任何事情。

在這些核心類中,我也不想讓代碼更長,並且使用這些助手在每個方法中初始化對象。

我該如何處理?或者,也許靜態方法在這裏不是很糟糕?

+0

如果您使用像插件一樣的系統,您應該開始使用OOP。目前你不是。 [如何不使用靜力學來殺死你的測試性](http://kunststube.net/static/) – deceze

+0

這很容易說出來。如果在某些助手類中,我需要調用Url :: segment() - 另一個助手的方法?我可以用$ this創建一個大的繼承來處理它(單行),或者我可以在任何地方初始化對象。在這兩種情況下,我得到一些依賴關係。 – user2252786

回答

0

您寫道:

我也不想使代碼較長時間,並 使用這些助手的每一個方法初始化對象。

我想避免實例化對象,那麼你應該堅持靜態方法。在我的項目中,我使用助手的靜態方法,原因完全相同。 這些輔助類然後被用作'函數庫'。在這種情況下,類更像是助手函數的名字空間,而不是被實例化的東西。