yii整體執(zhí)行流程直觀,具體由以下步驟: 1、程序入口文件index.php加載yii框架引導(dǎo)程序(bootstrap)文件yii.php,加載配置文件以及其他自定義配置。 2、yii.php中Yii類繼承了YiiBase,主要封裝框架的一些通用方法,比如自動加載、創(chuàng)建組件、核心類路徑映射、記錄日志以及調(diào)試等,YiiBase.php中注冊自動加載方法。另外Yii類預(yù)留可以自定義一些方法作為擴(kuò)展。3、回到index.php,Yii::createWebApplication($config),創(chuàng)建CWebApplication類, CWebApplication是一個前端控制器,管理MVC中的控制器,提供核心組件。實(shí)例化是通過父類CApplication的構(gòu)造函數(shù)進(jìn)行路徑別名映射,預(yù)初始化,初始化錯誤和異常handler,注冊框架核心組件(CApplication中的coreMessages、db、message、errorHandler、securityManager、statePersister、urlManager、request、format和CWebApplication中的session、assetManager、user、themeManager、authManager、clientScript、widgetFactory),配置文件的配置數(shù)組,添加行為(attachBehaviors),初始化預(yù)加載的組件(配置文件中配置),最后執(zhí)行init()預(yù)加載CHttpRequest對象。 4、再回到index.php,執(zhí)行前端控制器中的run()。首先執(zhí)行onBeginReques事件如果有的話,接下來處理請求過程,和其他框架一樣,獲取路由然后分發(fā)路由,通過controller和action映射到指定的控制器文件。 5、控制器類中以action開頭的方法(actions為外部動作除外),獲取model中的數(shù)據(jù),渲染view。 6、view的渲染可以選擇普通視圖和兩步視圖(layout),視圖中可以用widget小掛件,比較方便。 詳細(xì)的流程可以參見yii社區(qū)中的一張圖 |
|