學習Yii(3)

組件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:應用主題

數據庫

數據庫表名和列名都用小寫字母,用下劃線分隔單詞,表名推薦使用單數。

可使用前綴。

相關文章
相關標籤/搜索