在前面幾篇中已經設定了環境、建立了項目、也設定好了虛拟主機,接下來就要進行核心部分的程式設計了。就程式設計來說最經典的就是MVC了,而一個好的架構更是可以把MVC的思想發揮得淋漓盡緻,Symfony就是這樣的好架構!在Symfony看來,MVC架構如下圖所示:
這種模式将代碼分離為3個層 :
模型層(Model )定義業務邏輯(資料庫屬于這個層)。 symfony将與模型層關聯的所有類和檔案都放在<code>lib/model</code> 目錄下。
視圖層(View )是與使用者互動的層(模闆引擎是這個層的一部分)。在symfony中,視圖層主要由PHP模闆組成。這些檔案存儲在不同的<code>templates/</code> 目錄中,當然這并不是一個很好地做法,因為PHP太靈活了,這會使很多人不知不覺得将業務邏輯寫到這一層中。好在Symfony也意識到了這一點,在Symfony2中已經将Twig做為模闆使用了。
控制層(Controller )是一段代碼,它從模型層讀取資料傳送給視圖層,由視圖層顯示到用戶端。先前我們看到來自使用者的所有請求都由前端控制器(<code>index.php</code> 和 <code>f</code> <code>rontend_dev.php</code> )管理。這些前端控制器(front controllers)将實際工作交由動作(actions )處理,這些動作将被合理地組織到子產品 (modules)中。
這一篇主要是學習Symfony如何進行“M”的,:)!
1、進行關系資料庫的設計
由于本人比較喜歡使用工具進行設計,如MySQL WorkBench。本來的想法是從工具設計資料庫,然後建立資料庫,再使用<code>php symfony doctrine:build-schema指令自動生成Schema檔案,進而省略以下2-4步,但很遺憾,使用指令自動生成的Schema檔案和資料庫不一緻,需要再做修改,而無法直接使用。還有個方法是使用johmue的Schema導出腳本,将MySQL WorkBench生成的mwb檔案轉成doctrains的schame檔案,不過由于看上去有點複雜,是以沒有去嘗試,有興趣的兄弟不妨一試。</code>
2、就是選擇ORM工具
在Symfony中支援兩種基于PHP的ORM工具:Doctrains和Propel,我選擇了Doctrains,原因很簡單,Symfony 預設使用它!(其實我選擇它是因為Symfony 在1.2時還預設使用Propel,而1.4卻預設使用Doctraine,而在Symfony2中也預設使用Doctraine,是以為了以後更新順利選擇了Doctraine)。
3、配置資料庫參數
這個很簡單,可以直接在config/databases.yml中直接配置,也可以使用指令:
或者直接在NetBeans上找到<code>configure:database指令,然後在參數中輸入</code> <code>"mysql:host=localhost;dbname=jobeet" jobeet jobeet,點選運作,也可以達到同樣的效果。(看到這裡,大家對如何NetBeans中運作symfony指令</code> <code>應該比較清楚了,是以</code> <code>下面就偷個懶,直接寫指令了</code> <code>)</code>
4、編寫Doctrains的Schema檔案(YAML格式)
在<code>config/doctrine/schema.yml中直接編寫YAML格式的檔案</code>
5、從Schema中構模組化型檔案
這個指令從config/doctrine/*.yml中讀取Schema,然後将建構的模型檔案被放置在lib/model/doctraine中。
注意:該指令不會影響lib/model/doctraine中的自定義類,隻是替換lib/model/doctraine/base目錄中的檔案(這種處理方式真是優雅啊!)
6、生成SQL檔案
從模型檔案中生成SQL語句,該指令會從config/databases.yml檔案中獲得資料庫的類型,然後生成經過優化的SQL語句。
7、生成資料表
該指令連接配接資料庫,并根據lib/model/doctrine/*.class.php檔案生成資料表。
8、錄入初始資料
首先生成初始資料,在<code>data/fixtures/*.yml中直接編寫與資料表同名的YAML格式檔案。</code>
然後運作下列指令
這樣就可以在資料庫的表中插入初始資料<code>了。 本文轉自 firehare 51CTO部落格,原文連結:http://blog.51cto.com/firehare/585369,如需轉載請自行聯系原作者</code>