組件php
Component的或其子類的實例。屬性和事件web
組件的屬性。(名稱大小寫不敏感)數據庫
可讀可寫,就像對象的公共成員變量。數組
經過$component->屬性名。獲取屬性值。$component->屬性名 = 值 。設置屬性值。安全
組件事件(名稱大小寫不敏感)app
特殊的屬性。使用事件句柄 event handlers的方法做爲值。框架
組件事件以on開頭的命名方式定義。yii
組件行爲函數
組件能夠綁定多個行爲。行爲是一個對象,其方法能夠經過收集功能的方式來實現集成,多重繼承。佈局
行爲類必須實現IBehavior接口。行爲必需要綁定到一個組件,經過attach()綁定。而後經過組件能夠調用此方法。
模塊
模塊是一個獨立的軟件單元。包含模型,視圖,控制器和其餘組件,至關於一個小型的應用,位於一個應用裏。
大型應用裏,咱們把它分爲幾個模塊。每一個模塊單獨維護和部署。開發模塊,能夠在之後的項目裏複用。
模塊目錄
模塊名xxx文件夾 即ID/
模塊類文件xxxModule.php
可複用的用戶組件components/
小物件的視圖view/
控制器文件contrllers/
第三方擴展extension/
模塊類文件models/
視圖和佈局文件views/
index.php首頁視圖
具體開發過程當中目錄是按實際需求設置的。不必定是這樣。
模塊類文件繼承自CWebModule,必需要有這個繼承。
模塊目錄放在基礎目錄的modules下。配置時也能夠帶初始屬性值...
訪問路由咱們在以前都已寫過了,就是模塊ID/控制器ID/動做ID,若是控制器在子目錄中也能夠多寫一個文件夾路徑。
模塊的嵌套
理應上來講模塊能夠無限嵌套。 父模塊、子模塊,子模塊必須定義在父模塊的modules屬性裏,就像在應用配置中設定模塊同樣。路由:parentModuleID/childModuleID/controllerID/actionID。
上次看到模塊這,一晃就過去半個月時間,一頭扎進項目中,期間感受少些東西不瞭解,繼續把手冊幹完。
路徑別名與名字空間
恩。聽起來就以爲是命名空間
手冊說相似於namespace
用點號語法,RootAlias.path.to.target 。RootAlias是某個目錄的別名,經過YiiBase::getPathOfAlias()翻譯別名爲相應的帶槓槓的文件夾路徑。
經過YiiBase::setPathOfAlias()能夠定義新的根路徑別名
預約義:
system:表示Yii框架目錄 yii/framework
zii:表示Zii庫目錄
application:表示應用的基礎目錄
webroot:表示入口腳本文件所在的目錄 (入口腳本:通常是指寫有defined DEBUG,require_once框架引導文件那些的index.php)
ext:表示包含第三方擴展的目錄
這麼說它跟命名空間仍是不同的,能夠很方便的導入類Yii::import('system.web.CController');
import方法比include和require更加高效,import導入不會被真正包含,到第一次被引用纔會加載。
我也不懂優化,這些能帶來多少性能方面的改善
原生php好像沒有import這個函數 有的只見了include和require、include_once和require_once,php有好多咱們可能並不知道能用的函數可使用的哦。
Class Map 預先導入,預先導入的類能夠在應用的任何地方使用,無需導入或者包含文件。系統內置的類就是使用這樣的方法。在CWebApplication::run()執行以前寫入Yii::$classMap = array(){ 類名 => 文件路徑 }定義。
還能夠導入目錄,用Yii::import('目錄名’); 這樣目錄下的全部類文件在使用時都會被包含。
YII在命名空間引用上能夠說是很靈活了。之後再搞明白點。
開發規範
不知道爲何Yii手冊開發規範要放到這麼後面說
遵循規範能夠避免寫太多配置。
url規範
默認狀況:index.php?r=ControllerID/ActionID
r 爲路由,被Yii解析爲控制器和動做。
經過CUrlManager建立更加SEO友好的地址。
代碼規範
變量、函數、類使用駝峯,首字母大寫,變量和函數名第一個單詞小寫以區分於類
私有類成員如下劃線做爲名字的開頭
在php不支持命名空間時(5.3.0之前版本),避免類名衝突,全部的Yii框架類名以C爲前綴
控制器必須以Controller結尾
配置規範
配置使用鍵值對數組
鍵表明屬性名。值對應初始值
文件
類文件應以它們包含的公有類命名。視圖文件應以視圖的名字命名。配置文件能夠任意命名。
這在開發過程當中好像並無很好的遵照
目錄
WebRoot/protected: 這是應用基礎目錄,是放置全部安全敏感的PHP腳本和數據文件的地方。
WebRoot/protected/runtime:臨時文件
WebRoot/protected/extensions:第三方擴展
WebRoot/protected/modules:應用模塊,每一個模塊一個子目錄
WebRoot/protected/controllers:全部控制器文件
WebRoot/protected/views:全部控制器文件
WebRoot/protected/views/layouts:佈局文件
WebRoot/protected/views/system:系統視圖,用於顯示異常和錯誤的模板
WebRoot/assets:公共資源文件
WebRoot/themes:應用主題
數據庫
數據庫表名和列名都用小寫字母,用下劃線分隔單詞,表名推薦使用單數。
可使用前綴。