看到Qiang寫的這篇文章,非常不錯,權威性的Yii項目站點結構指南,目前本站均是採用這種目錄結構。
在這篇文章中,我們描述yiiframework.com站點使用目錄結構 – Yii框架項目的官方網站。雖然這種結構可能顯得過於複雜的對於小項目或是小的團隊,或在某種意義上可能不是最佳的選擇,但我們相信,它是非常適合在中型 或大型項目團隊一起開發環境的。事實上,我們已經成功地使用在其他一些大項目類似的結構。
總體目錄結構
下面是我們Yii 官方站點正在使用的目錄結構:
- /
- backend/
- common/
- components/
- config/
- params.php
- params-local.php *
- lib/
- Pear/
- yii/
- Zend/
- migrations/
- models/
- Comment.php
- Extension.php
- …
- console/
- commands/
- SitemapCommand.php
- …
- config/
- main.php
- main-local.php *
- params.php
- params-local.php *
- runtime/
- yiic.php *
- frontend/
- components/
- config/
- main.php
- main-local.php *
- params.php
- params-local.php *
- controllers/
- SiteController.php
- …
- lib/
- models/
- ContactForm.php
- SearchForm.php
- runtime/
- views/
- layouts/
- site/
- www/
- assets/
- css/
- js/
- index.php *
- yiic
- yiic.bat
在一個團隊開發的環境,我們通常都會使用一些源代碼版本的系統(如SVN,GIT)來管理上述的目錄結構。帶有星號標註的文件名不需要放在版本控制裏面,在後面我們將解釋到。
根目錄結構
在工程頂層根目錄下,我們有四個目錄:
- 後端(backend):後端應用程序,它主要用於管理後臺,網站管理員來管理整個系統。
- 前端(frontend):我們的目標最終用戶提供的主要接口的前端應用。
- 控制檯(console):控制檯應用程序包含系統所需要的控制檯命令的。
- 共同的特點(common):前端和後端,以及控制檯共用的。
正如我們可以看到,我們整個系統劃分成三個應用程序:後端,前端和控制檯。當然,如果需要,我們可以添加更多的應用程序(如API,提供Web API服務),根據自己的需求而定。我們使用共同(common)目錄下的文件在不同應用程序之間共享。
應用程序目錄
每個應用程序的目錄結構非常相似。例如,對於前端和後端,它們都具有這些目錄:
- 組件(components):包含這個應用程序使用的組件(如幫助類,工具類小部件)
- 配置(config):包含由應用程序使用的配置
- 控制器(controllers):包含控制器類
- LIB(lib):只用於此應用程序包含第三方庫
- 模型(models):包含這個應用程序需要用到的數據庫映射模型類
- 運行(runtime):存儲動態生成的文件
- 視圖(views):存儲控制器動作視圖腳本
- 網站根目錄(WWW):應用程序網站的Web根目錄
控制檯(console)目錄結構略與其它應用程序目錄不同,因爲它不需要控制器(controllers),視圖(views)和網站根目錄(www)。相反,它包含一個(commands)目錄來存儲所有控制檯的命令類文件。
公共(Common)目錄
公共的目錄(Common)中包含的文件用於其它應用程序之間共享。例如,每一個應用程序可能需要訪問該數據庫的使用 ActiveRecord。因此,我們可以將AR模型類放置在公共(common)的目錄下。同樣,如果在多個應用程序中使用了一些輔助(helper )或部件類(widget ),我們也應該把這些放置在公共目錄(common)下,以避免重複的代碼。
爲了便於代碼的維護,我們組織這個公共目錄結構(common)類似這個應用程序的目錄。例如,我們有組件(components),模型(models),第三方庫(lib)等等.
正如我們將很快解釋,應用程序也可以共享一部分的共用配置。因此,我們還可以存儲config目錄下共同的常見配置。
當開發一個大型項目開發週期長,我們需要不斷調整數據庫結構。出於這個原因,我們還可以使用數據庫遷移(DB migrations )功能來保持跟蹤數據庫的變化。我們將所有 DB migrations(數據庫遷移)目錄同樣都放在公共(common)目錄下面。
應用程序(Application )配置
同一系統中的應用通常有着一些共用的配置,如數據庫連接配置,應用程序的參數,爲了消除重複的代碼,
我們應該提取這些共用的配置,它們保存在一箇中心位置。在我們的設置,我們把這些放置在公共目錄(common)的配置(config)目錄下。
在團隊開發的環境中工作時,不同的開發人員可能有不同的開發環境(如操作系統,目錄,數據庫連接)。這些環境也往往都是來自不同的生產環境。爲了避免開發者之間的代碼衝突,我們分成兩部分的配置:基本配置(如main.php,params.php)和本地配置(例如主要local.php,PARAMS- local.php)。
基本配置應置於版本控制之下,像普通的源代碼,使每個開發人員可以通過共享。本地配置不應該被增加到版本控制之下,應該只存在於每一個人開發者的工作文件夾。開發人員可以自由的來修改他的本地配置。
在應用程序的引導腳本index.php文件,我們可以合併的基礎和本地配置和再配置的應用實例,如以下:
- require(‘path/to/yii.php’);
- $local=require(‘path/to/main-local.php’);
- $base=require(‘path/to/main.php’);
- $config=CMap::mergeArray($base, $local);
- Yii::createApplication($config)->run();
路徑別名(Path Alias)配置
爲了便於在不同的應用程序中引用文件,我們也聲明包含這四個頂級目錄的根目錄根路徑別名網站(譯者注: 也就是相當你的工程名稱)。因此,在前臺應用程序中聲明我們可以使用site.frontend.models.ContactForm來引用ContactForm類
部署應用(Deployment )
在項目開發過程結束後,我們需要將它部署到生產服務器。使用FTP或其他類似的服務將應用程序文件上傳到服務器,我們可以使用版本控制系統去做部署。然後,我們創建或修改的本地生產服務器的具體配置。例如,我們可能需要調整DB連接參數。我們可能要定義YII_DEBUG在index.php設爲false。
因爲我們每個應用程序存儲在一個單獨的目錄,這樣就帶來了更多的靈活性,如果你有多臺服務器,你可以將它們部署到不同的服務器,非常適合大型網站。
英文原文地址:
http://www.yiiframework.com/wiki/155/the-directory-structure-of-the-yii-project-site/#hh0
轉載請註明: 源文出自: IT快訊網 | 原文地址: Yii 官方站點的目錄結構