# 應用結構
我們之前已經講過,SF是一個非常嚴格的MVC框架。所以,我們的應用也嚴格遵循MVC分離的原則。
但是,由于本應用已經開發到了6.0版本,筆者對應用結構也有了全新的布局,所以在該版本的應用中,M模塊其實已經不再存在,而改用RESTful API調用的方式。因此本應用的結構也相對比較扁平。
簡單來說,我們創建了一系列的`Controller`,其中的`action`與`routing`關聯,負責接收來自主入口文件(`app.php`)的調派。
在某個具體的`action`中,一般的流程是:
* 獲取傳入的參數;
* 構建要調用的API URI;
* 獲得返回數據并解析[1](https://taylorr.gitbooks.io/building-a-web-site-with-symfony/content/05.03%20structure.html#fn_1);
* 將構造好的數據傳遞給一個模板并顯示;
根據應用要提供的功能,我們可以創建相應的`controller`。我們會在稍后的章節中說明各個`controller`的創建。
這個應用有前臺,也有后臺。
前臺是各個公共頁面,如首頁、書籍列表、書籍詳情、書評列表、其它頁面等。下圖是首頁的效果[2](https://taylorr.gitbooks.io/building-a-web-site-with-symfony/content/05.03%20structure.html#fn_2)。

后臺需要登陸,顯示相關的統計數據,如下圖所示。

> 1. RESTful API接口返回的都是JSON格式的數據,所以必須將其轉換到一個對象或者數組以便PHP進一步使用。[??](https://taylorr.gitbooks.io/building-a-web-site-with-symfony/content/05.03%20structure.html#reffn_1 "Jump back to footnote [1] in the text.")
> 2. 這是我運行中的站點的首頁,比本教程要創建的首頁更復雜。[??](https://taylorr.gitbooks.io/building-a-web-site-with-symfony/content/05.03%20structure.html#reffn_2 "Jump back to footnote [2] in the text.")
- 引言
- 1 LAMP
- 1.1 安裝虛擬機
- 1.2 安裝Vagrant
- 1.3 安裝Ubuntu
- 1.4 安裝Apache 2
- 1.5 安裝PHP
- 1.6 安裝MySQL服務器
- 1.7 最后的微調
- 1.8 設置一個虛擬主機
- 1.9 一個趁手的IDE
- 2 Symfony 3和重要構件
- 2.1 Symfony 3
- 2.2 Doctrine
- 2.3 Twig
- 2.4 Composer
- 3 Symfony重要概念
- 3.1 MVC
- 3.2 Bundle/包
- 3.3 Route/路由
- 3.4 Controller/控制器
- 3.5 Entity/實體
- 3.6 Repository/倉庫
- 3.7 Template/模板
- 3.8 Test/測試
- 4 藏書管理程序的結構
- 5 創建應用
- 5.1 建立版本管理
- 5.2 建立數據庫
- 5.3 應用結構
- 5.4 建立數據庫實體
- 5.5 樣本數據
- 5.6 路由
- 5.7 模板
- 5.8 開始編寫首頁
- 5.9 書籍詳情頁面
- 5.10 書籍列表頁面
- 5.11 書籍搜索
- 6 用戶和后臺
- 7 結語