2009-01-21 74 views
3

我正在建立我的個人CMS並需要你的建議來組織核心功能和課程。 我有文件夾:建立個人CMS - 課程和圖書館

/shared 
    /classes 
     DB.php 
     Session.php 
     Config.php 
     ... 
    /libraries 
     Arrays.php 
     DateTime.php 
     Email.php 
     ... 

該文件在「類」文件夾中包含核心類(每個文件一個類)。

現在的問題是關於/ libraries/- 它們包含可用於任何類的函數,有時它們會使用另一個庫中的其他函數,有時它們需要訪問某個核心類。 我應該只是將它們寫成函數,或者將它們設置爲靜態幷包裝在某個類中? 基本上我需要他們無處不在,但保持他們組織。

回答

0

我的建議是先思考CMS的架構目標。當然,這將會是你的100%,但這並不意味着你不會因爲不知道什麼時候會在哪裏以及如何吸引什麼而陷入困境,這會做什麼以及如何從這裏獲得。

這就是爲什麼我絕對不會建議你有庫調用庫。從我的角度來看,除了應用程序流中的前幾個核心類以外,您的任何類都不應該依賴於其他任何內容,因爲您希望將該工作分發到其他單個獨立的自包含類中。你應該瞄準你的核心課程的奇點和原子性。我不知道你的架構模式會是什麼(我會假設它將是MVC,HMVC或PAC),但我認爲最好先定義一些核心類[/ core]在初始化所請求的控制器[/控制器]之前,通過實例化某些庫[/庫]來初始化應用程序的基礎,這些庫用於解析傳入請求請求並執行一些默認任務。

圖書館應該有一個目的。會話處理庫應該僅處理會話,路由庫路由等。最初,您可以創建基礎控制器和基礎模型並將其放置在[/ core]中,並讓控制器[/ controllers]和模型[/ models]擴展您的基礎控制器和模型來自[/ core]。

與往常一樣,組件越少耦合越好。一個好的解決方案將是輕量級的,小而廣泛的目的。如果您在將來更改任何設計思路,您可以簡單地更改核心類並對整個應用程序產生巨大影響,而無需在其他地方做出任何進一步的更改,這會有所幫助。

+0

謝謝你的描述性答案 – 2009-01-22 08:10:02

1

我應該只是將它們寫成函數, 或使它們變爲靜態幷包裝在某些 類中?基本上我需要它們到處都是 ,但要保持它們的組織。

你看過名字空間嗎?將所有函數包裝到命名空間中可能是您​​最好的選擇。