Yii框架官方指南系列13——基礎知識:開發規範

Yii 偏心規範勝於配置。遵循規範可以使你可以建立成熟的Yii應用而不須要編寫、維護複雜的配置。 固然了,在必要時,Yii 仍然能夠在幾乎全部的方面經過配置實現自定義。php

下面咱們講解 Yii 編程中推薦的開發規範。 爲簡單起見,咱們假設 WebRoot 是 Yii 應用安裝的目錄html

1. URL

默認狀況下,Yii 識別以下格式的 URL:數據庫

http://hostname/index.php?r=ControllerID/ActionID

r GET 變量意爲 路由(route) ,它能夠被Yii解析爲 控制器和動做。 若是 ActionID 被省略,控制器將使用默認的動做(在CController::defaultAction中定義); 若是 ControllerID 也被省略(或者 r 變量不存在),應用將使用默認的控制器 (在CWebApplication::defaultController中定義)。編程

經過 CUrlManager 的幫助,能夠建立更加可識別,更加 SEO 友好的 URL,例如http://hostname/ControllerID/ActionID.html。此功能在 URL Management 中有詳細講解。數組

2. 代碼

Yii 推薦命名變量、函數和類時使用 駝峯風格,即每一個單詞的首字母大寫並連在一塊兒,中間無空格。 變量名和函數名應該使它們的第一個單詞所有小寫,以使其區別於類名(例如:$basePathrunController(),LinkPager)。對私有類成員變量來講,咱們推薦如下劃線做爲其名字前綴(例如: $_actionList)。安全

因爲在 PHP 5.3.0 以前不支持名字空間,咱們推薦類要經過某種獨立的方式命名,以免和第三方類發生衝突。鑑於此, 全部的 Yii 框架類名以 "C" 做前綴。服務器

一個針對控制器名字的特殊規則是它們必須以單詞 Controller 結尾。那麼控制器 ID 即類名的首字母小寫並去掉單詞 Controller。 例如,PageController 類的 ID 就是 page 。這個規則使應用更加安全。它還使控制器相關的URL更加簡單(例如 /index.php?r=page/index 而不是 /index.php?r=PageController/index)。app

3. 配置

配置是一個鍵值對數組。每一個鍵表明了所配置的對象中的屬性名,每一個值則爲相應屬性的初始值。 例如,array('name'=>'My application', 'basePath'=>'./protected') 初始化了 name 和 basePath 屬性爲它們相應的數組值。框架

類中任何可寫的屬性均可以被配置。若是沒有配置,屬性將使用它們的默認值。 當配置一個屬性時,最好閱讀相應文檔以保證初始值正確。yii

4. 文件

命名和使用文件的規範取決於它們的類型。

類文件應以它們包含的公有類命名。例如, CController 類位於 CController.php 文件中。 公有類是能夠被任何其餘類使用的類。每一個類文件應包含最多一個公有類。 私有類(只能被一個公有類使用的類)能夠放在使用此類的公有類所在的文件中。

視圖文件應以視圖的名字命名。例如, index 視圖位於 index.php 文件中。 視圖文件是一個PHP腳本文件,它包含了用於呈現內容的 HTML和PHP代碼。

配置文件能夠任意命名。 配置文件是一個PHP腳本,它的主要目的是返回一個體現配置的關聯數組。

5. 目錄

Yii 假定了一系列默認的目錄用於不一樣的場合。若是須要,每一個目錄均可以自定義。

  • WebRoot/protected: 這是 應用基礎目錄, 是放置全部安全敏感的PHP腳本和數據文件的地方。Yii 有一個默認的 application 別名指向此目錄。 此目錄及目錄中的文件應該保護起來防止Web用戶訪問。它能夠經過 CWebApplication::basePath 自定義。

  • WebRoot/protected/runtime: 此目錄放置應用在運行時產生的私有臨時文件。 此目錄必須對 Web 服務器進程可寫。它能夠經過 CApplication::runtimePath自定義。

  • WebRoot/protected/extensions: 此目錄放置全部第三方擴展。 它能夠經過 CApplication::extensionPath自定義。

  • WebRoot/protected/modules: 此目錄放置全部的應用 模塊,每一個模塊使用一個子目錄。

  • WebRoot/protected/controllers: 此目錄放置全部控制器類文件。 它能夠經過CWebApplication::controllerPath 自定義。

  • WebRoot/protected/views: 此目錄放置全部試圖文件, 包含控制器視圖,佈局視圖和系統視圖。 它能夠經過 CWebApplication::viewPath 自定義。

  • WebRoot/protected/views/ControllerID: 此目錄放置單個控制器類中使用的視圖文件。 此處的ControllerID 是指控制器的 ID 。它能夠經過 CController::viewPath 自定義。

  • WebRoot/protected/views/layouts: 此目錄放置全部佈局視圖文件。它能夠經過CWebApplication::layoutPath 自定義。

  • WebRoot/protected/views/system: 此目錄放置全部系統視圖文件。 系統視圖文件是用於顯示異常和錯誤的模板。它能夠經過 CWebApplication::systemViewPath 自定義。

  • WebRoot/assets: 此目錄放置公共資源文件。 資源文件是能夠被髮布的,可由Web用戶訪問的私有文件。此目錄必須對 Web 服務器進程可寫。 它能夠經過 CAssetManager::basePath 自定義

  • WebRoot/themes: 此目錄放置應用使用的不一樣的主題。每一個子目錄即一個主題,主題的名字即目錄的名字。 它能夠經過 CThemeManager::basePath 自定義。

6. 數據庫

多數Web 應用是由數據庫驅動的。爲了最佳時間,咱們 推薦在對錶和列命名時使用以下命名規範。注意,這些規範並非 Yii 所必須的。

  • 數據庫表名和列名都使用小寫命名。

  • 名字中的單詞應使用下劃線分割 (例如 product_order)。

  • 對於表名,你既可使用單數也可使用複數。但 不要 同時使用二者。爲簡單起見,咱們推薦使用單數名字。

  • 表名可使用一個通用前綴,例如 tbl_ 。這樣當應用所使用的表和另外一個應用說使用的表共存於同一個數據庫中時就特別有用。 這兩個應用的表能夠經過使用不一樣的表前綴很容易地區別開。

相關文章
相關標籤/搜索