2012-06-30 13 views
2

我使用MVC架構開發PHP應用程序,我真的需要有關以下設計原則建議:PHP應用程序的類結構的指導方針

根據PHP類結構的最佳實踐,它指出,有人應儘量減少模塊的依賴性,我應用程序類繼承如下:

  • 一些操作/方法都可以訪問各個階層
  • 我所做的是我已經創建了一個助手類將包含像字符串操作所有這些「全球性」的方法,整數manipulat離子,數組操作,然後讓想要使用這些方法的其他類擴展該類。

類組織:

interface StringHelper{ 
... 
} 
interface ArrayHelper{ 
... 
} 

class GeneralHelper implements StringHelper, ArrayHelper{ 
...... 
} 

class NewClass extends GeneralHelper{ 
... 
} 

// user factory style to create object 
class NewClassFactory{ 
    public function create($options){ 
    return new NewClass($options); 
    } 
} 

應用程序有大約15班。

這種方法適用於這種情況,還是在維護我的應用程序時最終會遇到大問題? 希望你的幫助。

回答

1

在大多數情況下,輔助類應該始終是靜態的,沒有工作類應該擴展它。幫助者是全球性的,他們在工人階級的主要範圍內沒有任何作用。想想助手是水管工,雜工等。如果你正在寫一個家庭班,它不應該延長管道工,管道工應該在需要時進來,與家人沒有任何關係。

你需要的是這樣的:

class NewClass { 
... 
$some_string = declaration 

$some_string = StringHelper::sanitizeString($some_string); 

} 
+0

哦好吃的東西,機會是迂腐...'類DishWasherMaintenanceMan擴展管道工{}'和'類HeatingEngineer擴展管道工{}' - 雖然我不把你的指出,在編寫幫助程序時,有一個基本幫助程序並將其擴展到特定情況通常很有用。另外我會考慮PHP的本地DOM實現是圍繞擴展助手('DOMNode')設計的,並且效果很好。 – DaveRandom

+0

的確,在helpers/libraries範圍內擴展base helper是個好主意。但我正在解決用戶的問題/關注。用戶提到'...然後讓希望使用這些方法的其他類擴展該類。「我認爲他的意思是」其他類「是主要的工作類,在這種情況下,恕我直言,工作類不應該擴展幫助者 – Stewie

+0

我已經得到了你的觀點@DaveRandom,所以我應該做的就是像這樣.....類GeneralHelper {..陳述在這裏}然後在類NewClass {公共函數doThing(){$ new_string = GeneralHelper: :toLower(「任何lettercase中的一些字符串」);}} –