搜尋
首頁後端開發php教程Yii框架官方指南系列13—基礎知識:發展規範


Yii 偏好規範勝於配置。遵循規格可使你能夠創建成熟的Yii應用程式而不需要編寫、維護複雜的配置。 當然了,在必要時,Yii 仍然可以在幾乎所有的方面透過配置實現自訂。

下面我們講解 Yii 程式設計中所建議的開發規格。 為簡單起見,我們假設 WebRoot 是 Yii 應用程式安裝的目錄。

1. URL

預設情況下,Yii 辨識以下格式的 URL:

http://www.php.cn/

r GET 變數意為 路由(route) ,它可以被Yii解析為 控制器和動作。 如果 ActionID 省略,控制器會使用預設的動作(在CController::defaultAction中定義); 如果 ControllerID 也省略(或 r 變數不存在),則應用將使用預設的控制器(或在 

r

 變數CWebApplication::defaultController中定義)。 透過 CUrlManager 的幫助,可以創建更可識別,更 SEO 友善的 URL,例如

http://www.php.cn/

。此功能在 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

)。

3. 配置配置是一個鍵值對數組。每個鍵代表了所配置的物件中的屬性名,每個值則為對應屬性的初始值。 例如,array('name'=>'My application', 'basePath'=>'./protected') 初始化了 name 和 

basePath

 base為它們對應的陣列值。

類別中任何可寫的屬性都可以被設定。如果沒有配置,屬性將使用它們的預設值。 當配置一個屬性時,最好閱讀對應文件以確保初始值正確。

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_ 。這樣當應用程式所使用的表和另一個應用程式說使用的表共存於同一個資料庫中時就特別有用。 這兩個應用的表可以透過使用不同的表前綴很容易地區分開。

以上就是Yii框架官方指南系列13——基礎知識:開發規範的內容,更多相關內容請關注PHP中文網(www.php.cn)!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
超越炒作:評估當今PHP的角色超越炒作:評估當今PHP的角色Apr 12, 2025 am 12:17 AM

PHP在現代編程中仍然是一個強大且廣泛使用的工具,尤其在web開發領域。 1)PHP易用且與數據庫集成無縫,是許多開發者的首選。 2)它支持動態內容生成和麵向對象編程,適合快速創建和維護網站。 3)PHP的性能可以通過緩存和優化數據庫查詢來提升,其廣泛的社區和豐富生態系統使其在當今技術棧中仍具重要地位。

PHP中的弱參考是什麼?什麼時候有用?PHP中的弱參考是什麼?什麼時候有用?Apr 12, 2025 am 12:13 AM

在PHP中,弱引用是通過WeakReference類實現的,不會阻止垃圾回收器回收對象。弱引用適用於緩存系統和事件監聽器等場景,需注意其不能保證對象存活,且垃圾回收可能延遲。

解釋PHP中的__ Invoke Magic方法。解釋PHP中的__ Invoke Magic方法。Apr 12, 2025 am 12:07 AM

\_\_invoke方法允許對象像函數一樣被調用。 1.定義\_\_invoke方法使對象可被調用。 2.使用$obj(...)語法時,PHP會執行\_\_invoke方法。 3.適用於日誌記錄和計算器等場景,提高代碼靈活性和可讀性。

解釋PHP 8.1中的纖維以進行並發。解釋PHP 8.1中的纖維以進行並發。Apr 12, 2025 am 12:05 AM

Fibers在PHP8.1中引入,提升了並發處理能力。 1)Fibers是一種輕量級的並發模型,類似於協程。 2)它們允許開發者手動控制任務的執行流,適合處理I/O密集型任務。 3)使用Fibers可以編寫更高效、響應性更強的代碼。

PHP社區:資源,支持和發展PHP社區:資源,支持和發展Apr 12, 2025 am 12:04 AM

PHP社區提供了豐富的資源和支持,幫助開發者成長。 1)資源包括官方文檔、教程、博客和開源項目如Laravel和Symfony。 2)支持可以通過StackOverflow、Reddit和Slack頻道獲得。 3)開發動態可以通過關注RFC了解。 4)融入社區可以通過積極參與、貢獻代碼和學習分享來實現。

PHP與Python:了解差異PHP與Python:了解差異Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

php:死亡還是簡單地適應?php:死亡還是簡單地適應?Apr 11, 2025 am 12:13 AM

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

PHP的未來:改編和創新PHP的未來:改編和創新Apr 11, 2025 am 12:01 AM

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能