Yii 官方站點的目錄結構

看到Qiang寫的這篇文章,非常不錯,權威性的Yii項目站點結構指南,目前本站均是採用這種目錄結構。

在這篇文章中,我們描述yiiframework.com站點使用目錄結構 – Yii框架項目的官方網站。雖然這種結構可能顯得過於複雜的對於小項目或是小的團隊,或在某種意義上可能不是最佳的選擇,但我們相信,它是非常適合在中型 或大型項目團隊一起開發環境的。事實上,我們已經成功地使用在其他一些大項目類似的結構。

總體目錄結構

下面是我們Yii 官方站點正在使用的目錄結構:

 
  1.     backend/ 
  2.     common/ 
  3.         components/ 
  4.         config/ 
  5.             params.php 
  6.             params-local.php * 
  7.         lib/ 
  8.             Pear/ 
  9.             yii/ 
  10.             Zend/ 
  11.         migrations/ 
  12.         models/ 
  13.             Comment.php 
  14.             Extension.php 
  15.             … 
  16.     console/ 
  17.         commands/ 
  18.             SitemapCommand.php 
  19.             … 
  20.         config/ 
  21.             main.php 
  22.             main-local.php * 
  23.             params.php 
  24.             params-local.php * 
  25.         runtime/ 
  26.         yiic.php * 
  27.     frontend/ 
  28.         components/ 
  29.         config/ 
  30.             main.php 
  31.             main-local.php * 
  32.             params.php 
  33.             params-local.php * 
  34.         controllers/ 
  35.             SiteController.php 
  36.             … 
  37.         lib/ 
  38.         models/ 
  39.             ContactForm.php 
  40.             SearchForm.php 
  41.         runtime/ 
  42.         views/ 
  43.             layouts/ 
  44.             site/ 
  45.         www/ 
  46.             assets/ 
  47.             css/ 
  48.             js/ 
  49.             index.php * 
  50.     yiic 
  51.     yiic.bat 

在一個團隊開發的環境,我們通常都會使用一些源代碼版本的系統(如SVN,GIT)來管理上述的目錄結構。帶有星號標註的文件名不需要放在版本控制裏面,在後面我們將解釋到。

根目錄結構
在工程頂層根目錄下,我們有四個目錄:

 
  1. 後端(backend):後端應用程序,它主要用於管理後臺,網站管理員來管理整個系統。 
  2. 前端(frontend):我們的目標最終用戶提供的主要接口的前端應用。 
  3. 控制檯(console):控制檯應用程序包含系統所需要的控制檯命令的。 
  4. 共同的特點(common):前端和後端,以及控制檯共用的。 

正如我們可以看到,我們整個系統劃分成三個應用程序:後端,前端和控制檯。當然,如果需要,我們可以添加更多的應用程序(如API,提供Web API服務),根據自己的需求而定。我們使用共同(common)目錄下的文件在不同應用程序之間共享。

應用程序目錄
每個應用程序的目錄結構非常相似。例如,對於前端和後端,它們都具有這些目錄:

 
  1. 組件(components):包含這個應用程序使用的組件(如幫助類,工具類小部件) 
  2. 配置(config):包含由應用程序使用的配置 
  3. 控制器(controllers):包含控制器類 
  4. LIB(lib):只用於此應用程序包含第三方庫 
  5. 模型(models):包含這個應用程序需要用到的數據庫映射模型類 
  6. 運行(runtime):存儲動態生成的文件 
  7. 視圖(views):存儲控制器動作視圖腳本 
  8. 網站根目錄(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.phpparams.php)和本地配置(例如主要local.phpPARAMS- local.php)。
基本配置應置於版本控制之下,像普通的源代碼,使每個開發人員可以通過共享。本地配置不應該被增加到版本控制之下,應該只存在於每一個人開發者的工作文件夾。開發人員可以自由的來修改他的本地配置。
在應用程序的引導腳本index.php文件,我們可以合併的基礎和本地配置和再配置的應用實例,如以下:

 
  1. require(‘path/to/yii.php’); 
  2. $local=require(‘path/to/main-local.php’); 
  3. $base=require(‘path/to/main.php’); 
  4. $config=CMap::mergeArray($base$local); 
  5. Yii::createApplication($config)->run(); 

路徑別名(Path Alias)配置

爲了便於在不同的應用程序中引用文件,我們也聲明包含這四個頂級目錄的根目錄根路徑別名網站(譯者注: 也就是相當你的工程名稱)。因此,在前臺應用程序中聲明我們可以使用site.frontend.models.ContactForm來引用ContactForm類

部署應用(Deployment )

在項目開發過程結束後,我們需要將它部署到生產服務器。使用FTP或其他類似的服務將應用程序文件上傳到服務器,我們可以使用版本控制系統去做部署。然後,我們創建或修改的本地生產服務器的具體配置。例如,我們可能需要調整DB連接參數。我們可能要定義YII_DEBUGindex.php設爲false

因爲我們每個應用程序存儲在一個單獨的目錄,這樣就帶來了更多的靈活性,如果你有多臺服務器,你可以將它們部署到不同的服務器,非常適合大型網站。

英文原文地址:
http://www.yiiframework.com/wiki/155/the-directory-structure-of-the-yii-project-site/#hh0

轉載請註明: 源文出自: IT快訊網 |  原文地址: Yii 官方站點的目錄結構

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章