簡體   English   中英

組織PHP類層次結構的最佳方法

[英]Best Way to Organize PHP Class Hierarchy

我有一個原始的框架,我一直在使用我的大多數項目,但一般的設計問題浮現在腦海里,我還沒有能夠解決。 對於給定的應用程序,我應該將特定於應用程序的類結構與框架的結構分開,還是構建在框架之上並不是一件壞事?

例如,假設我有一個帶有基本Controller類的框架,並將其擴展到我的應用程序的給定部分。 哪種安排最有意義,為什么?

班級結構A:

  • 調試時直觀,易於查找的源文件。
  • 文件命名/目錄結構鏡像類heirarchy。
- Framework_Control                 "Framework\Control.php"
   - Framework_Control_Index        "Framework\Control\Index.php"
   - Framework_Control_Home         "Framework\Control\Home.php"
   - Framework_Control_Contact      "Framework\Control\Contact.php"
   - Framework_Control_About        "Framework\Control\About.php"

班級結構B:

  • 保持框架模塊化,易於更換/更新。
  • 為目錄結構增加了一些復雜性,目錄/文件命名不再一直跟在類heirarchy之后。
- Framework_Control                 "Framework\Control.php"
   - Application_Control_Index      "Application\Control\Index.php"
   - Application_Control_Home       "Application\Control\Home.php"
   - Application_Control_Contact    "Application\Control\Contact.php"
   - Application_Control_About      "Application\Control\About.php"

我知道整體而言,這將歸結為個人偏好,但我想確定在決定走哪條路之前,我要權衡所有的利弊。 它實際上歸結為類命名和目錄結構,因為實際的層次結構在任何一種情況下都保持不變。

我建議您在兩個不同的類別中查看源代碼,外部依賴項或跨多個站點使用的代碼,而不是任何單個站點和本機依賴項本機,或者您正在處理的特定站點的本機代碼。

聽起來像Framework / Control.php是更大的外部依賴的一部分,應該這樣管理,而應用程序/控制文件都是特定網站的原生。

在我們的代碼結構中使用這種差異使得在多個站點之間輕松地重用我們的內部框架變得更加容易。

最后,您可以考慮查看Zend Framework,Symfony等其他主要框架。 盡管整個框架可能比您想要的更多,但框架的結構可以為PHP開發人員在各地使用的常見,良好實踐提供大量見解。

它真正歸結為您在Application XYZ中更新Framework \\ Control.php時要做什么。 你打算回到Application ABC並做同樣的改變嗎? 如果這是一個關鍵的錯誤怎么辦?

為了保證所有項目的可維護性,我會選擇第二種方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM