Yii 偏好規範勝於配置。遵循規格可使你能夠創建成熟的Yii應用程式而不需要編寫、維護複雜的配置。 當然了,在必要時,Yii 仍然可以在幾乎所有的方面透過配置實現自訂。
下面我們講解 Yii 程式設計中所建議的開發規格。 為簡單起見,我們假設 WebRoot 是 Yii 應用程式安裝的目錄。
預設情況下,Yii 辨識以下格式的 URL:
http://www.php.cn/
r
GET 變數意為 路由(route) ,它可以被Yii解析為 控制器和動作。 如果 ActionID
省略,控制器會使用預設的動作(在CController::defaultAction中定義); 如果 ControllerID
也省略(或 r
變數不存在),則應用將使用預設的控制器(或在
變數CWebApplication::defaultController中定義)。 透過 CUrlManager 的幫助,可以創建更可識別,更 SEO 友善的 URL,例如
2. 代碼Yii 推薦命名變數、函數和類別時使用 駝峰風格,即每個單字的首字母大寫並連在一起,中間無空格。 變數名稱和函數名稱應該會使它們的第一個單字全部小寫,以使其區別於類別名稱(例如:
$basePath
, runController()
,LinkPager
)。對私有類別成員變數來說,我們建議以下劃線作為其名字前綴(例如:
)。
由於在 PHP 5.3.0 之前不支援名字空間,我們推薦類別要以某種獨立的方式命名,以避免和第三方類別發生衝突。有鑑於此, 所有的 Yii 框架類別名稱以 "C" 作前綴。 一個針對控制器名字的特殊規則是它們必須以單字
Controller
結尾。那麼控制器 ID 即類別名稱的首字母小寫並去除單字 Controller
。 例如,PageController
類別的 ID 就是 page
。這個規則使應用程式更加安全。它也讓控制器相關的URL更簡單(例如 /index.php?r=page/index
而不是
3. 配置配置是一個鍵值對數組。每個鍵代表了所配置的物件中的屬性名,每個值則為對應屬性的初始值。 例如,
array('name'=>'My application', 'basePath'=>'./protected')
初始化了 name
和
base為它們對應的陣列值。
4. 文件
命名和使用文件的規範取決於它們的類型。 類文件應以它們包含的公有類命名。例如, CController 類別位於
檔案中。 公有類別是可以被任何其他類別使用的類別。每個類別文件應包含最多一個公有類別。 私有類別(只能被一個公有類別使用的類別)可以放在使用此類別的公有類別所在的檔案中。 視圖檔案應以視圖的名字命名。例如,
index
視圖位於
檔案。 視圖文件是一個PHP腳本文件,它包含了用於呈現內容的 HTML和PHP程式碼。
5. 目錄
WebRoot/protected
: 這是 應用基礎目錄, 是放置所有安全敏感的PHP腳本和資料檔案的地方。 Yii 有一個預設的
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 自訂。
多數Web 應用是由資料庫驅動的。為了最佳時間,我們 推薦在對錶和列命名時使用以下命名規範。請注意,這些規範並不是 Yii 所必須的。
資料庫表名和列名都使用小寫命名。
名字中的單字應使用底線分割 (例如 product_order
)。
對於表名,你既可以使用單數也可以使用複數。但 不要 同時使用兩者。為簡單起見,我們推薦使用單數名字。
表名可以使用一個通用前綴,例如 tbl_
。這樣當應用程式所使用的表和另一個應用程式說使用的表共存於同一個資料庫中時就特別有用。 這兩個應用的表可以透過使用不同的表前綴很容易地區分開。
以上就是Yii框架官方指南系列13——基礎知識:開發規範的內容,更多相關內容請關注PHP中文網(www.php.cn)!