Yii2.0官方高級模板的目錄結構分析
打算本身作個新的項目,會在博客記錄天天所作的事。最近在學習Yii框架,雖然Yaf我也在看,不過主要精力都在Yii上面了,決定作個相似貼吧的小站,框架選擇了Yii,在網上看了一些關於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文件,咱們能夠合併的基礎和本地配置和再配置的應用實例,如如下:
<?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。
由於咱們每一個應用程序存儲在一個單獨的目錄,這樣就帶來了更多的靈活性,若是你有多臺服務器,你能夠將它們部署到不一樣的服務器,很是適合大型網站。
歡迎關注本站公眾號,獲取更多信息