我喜歡你的想法。我看了一下CodeIgniter,Cake和其他框架,雖然他們很好,但我決定寫我自己的。我學到了一噸。我的框架的第一次修改並不是很好,但我有兩個運行的站點沒有問題。它的第二版可能不如Cake等成熟,但它使構建PHP應用程序變得輕而易舉,對我來說最關鍵的是:我知道每行代碼的作用,並且它非常快速地更改和調試。
我認爲做的第一件事就是要想想你將如何打破應用到層,明顯的候選人是:
- 前端控制器:它解析URL,並決定做什麼用的類他們。現在大多數框架使用Apache mod-rewrite規則將所有URL轉發到一個類 - 所以它是您的應用程序的單一入口點。
- 數據庫抽象層:將您讀取/寫入數據庫的所有代碼放在一個地方,並讓所有內容都可以調用。也被稱爲ORM。
- Models:代表數據庫中一個或多個表的類。
- 控制器:更新/讀取模型,應用邏輯並填充和顯示視圖的類。
- Views:從您的控制器導入數據的HTML文件。我使用Smarty。
因此,採取這些元素,你有一個基本的目錄結構:
/models
/controllers
/includes
/views
/css
/js
index.php
的index.php是我的前端控制器。我把ORM的東西和其他幫助類用於處理表單和東西進入/ includes目錄。很明顯,/ css和/ js包含你的靜態JavaScript和CSS文件。
前端控制器的工作原理是,您擁有指定要創建哪個控制器的URL,如:www.domain.com/product/1/hello-world。產品是類的名稱(我稱之爲我的控制器控制器) - 所以在這裏,我的前端控制器將讀取URL的產品部分並創建一個ProductController的實例。
控制器根據它們給出的URL的其餘部分採取行動。所以ProductController得到1和hello-world的參數。 1可能是要加載和顯示的產品的索引。你好,世界只是SEO文本忽略。您也可以指定要調用的函數,所以www.domain.com/product/list - 這次您創建ProductController並調用列表函數。
有不同的方式來構建MVC應用程序,論壇充滿了關於它的爭論 - 我上面提到的或者可能不是真正的MVC,但主要目標是獲得良好的抽象到您的應用程序。
我建議檢查一下你的視圖層的Smarty。它是一個穩定的庫,並提供HTML緩存。
可能重複[指導,大規模PHP開發提示/技巧。](http://stackoverflow.com/questions/1940677/guidance-tips-tricks-for-larger-scale-php-development) – Gordon 2010-11-05 10:06:35
[這本書](http://www.amazon.co.uk/Objects-Patterns-Practice-Experts-Source/dp/143022925X/ref=sr_1_1?ie=UTF8&qid=1288951406&sr=8-1)真的幫助我讓我加快來自古代PHP 3&4代碼的速度。 – Wrikken 2010-11-05 10:27:11