亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

詳解PHP的Yii框架的運行機制及其路由功能

2020-03-22 16:54:55
字體:
來源:轉載
供稿:網友
運行機制概述
每一次 Yii 應用開始處理 HTTP 請求時,它都會進行一個近似的流程。 用戶提交指向 入口腳本 web/index.php 的請求。 入口腳本會加載 配置數組 并創建一個 應用 實例用于處理該請求。 應用會通過 request(請求) 應用組件解析被請求的 路由。 應用創建一個 controller(控制器) 實例具體處理請求。 控制器會創建一個 action(動作) 實例并為該動作執行相關的 Filters(訪問過濾器)。 如果任何一個過濾器驗證失敗,該動作會被取消。 如果全部的過濾器都通過,該動作就會被執行。 動作會加載一個數據模型,一般是從數據庫中加載。 動作會渲染一個 View(視圖),并為其提供所需的數據模型。 渲染得到的結果會返回給 response(響應) 應用組件。 響應組件會把渲染結果發回給用戶的瀏覽器。下面的示意圖展示了應用是如何處理一個請求的。啟動引導(Bootstrapping)
啟動引導是指:在應用開始解析并處理新接受請求之前,一個預先準備環境的過程。啟動引導會在兩個地方具體進行:入口腳本(Entry Script) 和 應用主體(application)。在入口腳本里,需注冊各個類庫的類文件自動加載器(Class Autoloader,簡稱自動加載器)。這主要包括通過其 autoload.php 文件加載的 Composer 自動加載器,以及通過 Yii 類加載的 Yii 自動加載器。之后,入口腳本會加載應用的 配置(configuration) 并創建一個 應用主體 的實例。在應用主體的html' target='_blank'>構造函數中,會執行以下引導工作: 調用 yii/base/Application::preInit()(預初始化)方法,配置一些高優先級的應用屬性,比如 yii/base/Application::basePath 屬性。 注冊yii/base/Application::errorHandler。 通過給定的應用配置初始化應用的各屬性。 通過調用 yii/base/Application::init()(初始化)方法,它會順次調用 yii/base/Application::bootstrap() 從而運行引導組件。 加載擴展清單文件(extension manifest file) vendor/yiisoft/extensions.php。 創建并運行各個擴展聲明的 引導組件(bootstrap components)。 創建并運行各個 應用組件 以及在應用的 Bootstrap 屬性中聲明的各個 模塊(modules)組件(如果有)。因為引導工作必須在處理每一次請求之前都進行一遍,因此讓該過程盡可能輕量化就異常重要,請盡可能地優化這一步驟。請盡量不要注冊太多引導組件。只有他需要在 HTTP 請求處理的全部生命周期中都作用時才需要使用它。舉一個用到它的范例:一個模塊需要注冊額外的 URL 解析規則,就應該把它列在應用的 bootstrap 屬性之中,這樣該 URL 解析規則才能在解析請求之前生效。(譯注:換言之,為了性能需要,除了 URL 解析等少量操作之外,絕大多數組件都應該按需加載,而不是都放在引導過程中。)在生產環境中,可以開啟字節碼緩存,比如 APC,來進一步最小化加載和解析 PHP 文件所需的時間。一些大型應用都包含有非常復雜的應用配置,它們會被分割到許多更小的配置文件中。此時,可以考慮將整個配置數組緩存起來,并在入口腳本創建應用實例之前直接從緩存中加載。
yii的入口文件
這里使用了一個第三方的配置管理插件:marcovwout,來管理Yii的配置,細節我就不說了。剩下的就是就是一些基本的全局變量設置了。往Yii::createWebApplication里面傳入配置的數組,然后調用run方法,一個web應用是不是就這么跑起來了,是的,抽象到最高層就是這樣:我往一個容器里面傳入對應的配置,然后這個應用可以基于該配置正常運行起來。
說YiiBase中的兩個比較重要的方法 (import,autoload)
這里使用了一個第三方的配置管理插件:marcovwout,來管理Yii的配置,細節我就不說了。剩下的就是就是一些基本的全局變量設置了。往Yii::createWebApplication里面傳入配置的數組,然后調用run方法,一個web應用是不是就這么跑起來了,是的,抽象到最高層就是這樣:我往一個容器里面傳入對應的配置,然后這個應用可以基于該配置正常運行起來。路由
當入口腳本在調用 yii/web/Application::run() 方法時,它進行的第一個操作就是解析輸入的請求,然后實例化對應的控制器操作處理這個請求。該過程就被稱為引導路由(routing)。(譯注:中文里既是動詞也是名詞)解析路由路由引導的第一步,是把傳入請求解析為一個路由。如我們在 控制器(Controllers) 章節中所描述的那樣,路由是一個用于定位控制器操作的地址。這個過程通過 request 應用組件的 yii/web/Request::resolve() 方法實現,該方法會調用 URL 管理器 進行實質上的請求解析工作。默認情況下,傳入請求會包含一個名為 r 的 GET 參數,它的值即被視為路由。但是如果啟用 yii/web/UrlManager::enablePrettyUrl,那么在確定請求的路由時,就會進行更多處理。具體的細節請參考 URL 的解析與生成 章節。假使某路由最終實在無法被確定,那么 request 組件會拋出 yii/web/NotFoundHttpException 異常(譯注:大名鼎鼎的 404)。缺省路由如果傳入請求并沒有提供一個具體的路由,(一般這種情況多為于對首頁的請求)此時就會啟用由 yii/web/Application::defaultRoute 屬性所指定的缺省路由。該屬性的默認值為 site/index,它指向 site 控制器的 index 操作。你可以像這樣在應用配置中調整該屬性的值:return [ // ... 'defaultRoute' = 'main/index',catchAll 路由(全攔截路由)有時候,你會想要將你的 Web 應用臨時調整到維護模式,所有的請求下都會顯示相同的信息頁。當然,要實現這一點有很多種方法。這里面最簡單快捷的方法就是在應用配置中設置下 yii/web/Application::catchAll 屬性:return [ // ... 'catchAll' = ['site/offline'],catchAll 屬性需要傳入一個數組做參數,該數組的第一個元素為路由,剩下的元素會(以名值對的形式)指定綁定于該操作的各個參數。當設置了 catchAll 屬性時,它會替換掉所有從輸入的請求中解析出來的路由。如果是上文的這種設置,用于處理所有傳入請求的操作都會是相同的 site/offline。創建操作一旦請求路由被確定了,緊接著的步驟就是創建一個“操作(action)”對象,用以響應該路由。路由可以用里面的斜杠分割成多個組成片段,舉個栗子,site/index 可以分解為 site 和 index 兩部分。每個片段都是指向某一模塊(Module)、控制器(Controller)或操作(action)的 ID。從路由的首個片段開始,應用會經過以下流程依次創建模塊(如果有),控制器,以及操作: 設置應用主體為當前模塊。 檢查當前模塊的 yii/base/Module::controllerMap 是否包含當前 ID。如果是,會根據該表中的配置創建一個控制器對象,然后跳到步驟五執行該路由的后續片段。 檢查該 ID 是否指向當前模塊中 yii/base/Module::modules 屬性里的模塊列表中的一個模塊。如果是,會根據該模塊表中的配置創建一個模塊對象,然后會以新創建的模塊為環境,跳回步驟二解析下一段路由。 將該 ID 視為控制器 ID,并創建控制器對象。用下個步驟解析路由里剩下的片段。 控制器會在他的 yii/base/Controller::actions()里搜索當前 ID。如果找得到,它會根據該映射表中的配置創建一個操作對象;反之,控制器則會嘗試創建一個與該 ID 相對應,由某個 action 方法所定義的行內操作(inline action)。在上面的步驟里,如果有任何錯誤發生,都會拋出 yii/web/NotFoundHttpException,指出路由引導的過程失敗了。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
孩xxxx性bbbb欧美| 亚洲国产精品va在线看黑人动漫| 日韩视频亚洲视频| 欧美色另类天堂2015| 性欧美亚洲xxxx乳在线观看| 日韩中文字幕欧美| 日韩av在线免播放器| 亚洲黄色www| 欧美精品生活片| 国产欧美中文字幕| 欧洲成人免费aa| 国产精品国产亚洲伊人久久| 国产一区二区三区网站| 韩国日本不卡在线| 久久在线观看视频| 久久99久久99精品免观看粉嫩| 国产午夜精品一区理论片飘花| 国产69精品久久久久9999| 日本精品va在线观看| 国产亚洲精品高潮| 97欧美精品一区二区三区| 亚洲国产精久久久久久| 国产精品美女久久久久av超清| 欧美黄网免费在线观看| 成人免费直播live| 色综合伊人色综合网站| 91高潮精品免费porn| 久久久久久国产精品久久| 欧美日本啪啪无遮挡网站| 国内精品小视频在线观看| 在线视频国产日韩| 日本成熟性欧美| 亚洲a级在线播放观看| 九九热精品视频国产| 国内揄拍国内精品少妇国语| 日韩av日韩在线观看| 欧美在线日韩在线| 欧美多人乱p欧美4p久久| 色一情一乱一区二区| 日韩欧美在线第一页| 久久久午夜视频| 欧美激情a∨在线视频播放| 亚洲精品福利视频| 亚洲国产精品成人va在线观看| 亚洲精品国偷自产在线99热| 欧美激情亚洲视频| 亚洲色图激情小说| 国产精品极品尤物在线观看| 欧美成人午夜影院| 色偷偷888欧美精品久久久| 亚洲人成啪啪网站| 日韩av最新在线| 欧美成在线视频| 国产成+人+综合+亚洲欧美丁香花| 欧美日韩在线免费观看| 国产在线精品一区免费香蕉| 136fldh精品导航福利| 欧美又大粗又爽又黄大片视频| 最新中文字幕亚洲| www.久久撸.com| 91久久久久久久久久久| 一本大道香蕉久在线播放29| 91夜夜未满十八勿入爽爽影院| 亚洲free性xxxx护士白浆| 亚洲国产三级网| 国产91露脸中文字幕在线| 日韩成人av网| 欧美性猛交xxxxx水多| 国产欧美日韩精品丝袜高跟鞋| 日韩av中文字幕在线免费观看| 在线观看日韩专区| 国产精品日韩av| 亚洲 日韩 国产第一| 尤物tv国产一区| 国产视频在线观看一区二区| 日韩高清a**址| 91精品国产色综合久久不卡98| 国产精品一香蕉国产线看观看| 日本视频久久久| 欧美精品在线看| 欧美在线视频a| 欧美成人一二三| 国产精品大片wwwwww| 国产91热爆ts人妖在线| 日韩激情在线视频| 国产成人高潮免费观看精品| 亚洲免费视频观看| 日韩亚洲成人av在线| 亚洲精品狠狠操| 国产a级全部精品| 亚洲va欧美va国产综合剧情| 欧美裸身视频免费观看| 亚洲在线观看视频网站| 欧美一级大片在线免费观看| 国产精品xxxxx| 国产成人免费av| 日韩av网址在线| 亚洲第一精品自拍| 国产成人a亚洲精品| 国产精品色午夜在线观看| 国产精品wwww| 国产精品久久久久久久久久小说| 日韩av中文字幕在线| 日韩美女毛茸茸| 日韩精品高清视频| 色噜噜狠狠狠综合曰曰曰88av| 成人黄色影片在线| 国产欧美一区二区白浆黑人| 亚洲综合在线做性| 庆余年2免费日韩剧观看大牛| 日本一欧美一欧美一亚洲视频| 国产99在线|中文| 欧美成人中文字幕在线| 正在播放欧美视频| 一二美女精品欧洲| 久久国产精品久久久| 国产亚洲aⅴaaaaaa毛片| 亚洲精品国产精品国自产观看浪潮| 欧美性在线视频| 成人网在线免费观看| 色婷婷av一区二区三区在线观看| 欧美乱大交xxxxx另类电影| 日韩电视剧免费观看网站| 国产精品日日做人人爱| 日韩在线视频线视频免费网站| 成人做爰www免费看视频网站| 日韩av一区二区在线观看| 欧美一级视频免费在线观看| 中文字幕av一区中文字幕天堂| 日韩一区二区三区在线播放| 亚洲色图13p| 亚洲国产成人精品久久| 欧美国产一区二区三区| 亚洲欧洲激情在线| 欧美日韩激情视频8区| 欧美在线日韩在线| 国产视频久久久久| 午夜精品久久久久久99热软件| 人人澡人人澡人人看欧美| 日韩成人av一区| 亚洲精品美女久久| 国产色视频一区| 久久频这里精品99香蕉| 国产成人一区二区三区电影| 欧美一区深夜视频| 欧美乱人伦中文字幕在线| 91精品国产一区| 欧美美女18p| 日韩av中文字幕在线播放| 亚洲电影免费观看高清完整版在线| 视频在线一区二区| 欧美第一黄网免费网站| 国产精品69久久| 成人美女av在线直播| 国产成人精彩在线视频九色| 97视频在线播放| 亚洲free性xxxx护士白浆| 欧洲永久精品大片ww免费漫画| 欧美激情精品久久久久久大尺度| 国产日韩中文字幕在线| 欧美性xxxxxx| 国产欧美一区二区三区在线看| 日本高清不卡的在线| 亚洲成年人在线播放|