Cakephp 執行主要流程

2021-08-01 17:20:57 字數 2417 閱讀 9628

載入基本檔案 

cake/basics.php 裡面定義了常用的方法以及時間常量 

$time_start = getmicrotime(); 記錄開始執行時間 

cake/config/paths.php 裡面定義一些基本路徑 

cake/lib/object.php cake的基本類 

cake/lib/inflector.php 這裡主要是處理單複數,帶下劃開命名以及駝峰式命名 

cake/lib/configure.php 裡面提供檔案配置的讀寫,路徑的設定,以及載入檔案的方法 

cake/lib/cache.php 快取的操作 

configure::getinstance(); 開始對專案的配置 

config/core.php 專案的配置檔案 

config/bootstrap.php 專案的入口檔案 

$dispatcher = new dispatcher(); 

$dispatcher->dispatch($url); 開始執行,通過對當前的url解析,如果你設定了壓縮js、css,則對這些檔案壓縮輸出,如果你對頁面設定快取,則直接輸出快取頁面,最後查詢相應的controller。如果找不到,則進行相應的錯誤處理。 

例項化當前controller,確定檢視路徑,例項化component,獲得僅當前controller[不包含父類controller]的方法 

對當前controller中私有方法、帶admin路由或者帶prefix的方法進行保護,不允許直接訪問 

設定當前controller的基本屬性,如base、here、webroot、plugin、params、action、 passedargs[array_merge($this->params['pass'],$this->params['named'])] 

呼叫controller中的constructclasses方法 

執行__mergevars方法,該方法對父子類的components、helpers、uses等屬性進行特殊合併處理 

呼叫component->init()方法,載入使用者設定的系列components(session為預設),並預設enabled屬性為true。(該屬性可以後期在beforefilter裡修改) 

呼叫component->initialize()方法,若系列components裡有這個initialize方法並且該component 的enabled為true,則呼叫該components->initialize方法(這裡enabled使用者好像無法通過 controller設定,只能為true) 

呼叫當前controller中beforefilter()方法,這個方法是個好東西^_^ 

呼叫component->startup()方法,同樣,若系列components裡有這個startup方法並且該component的 enabled為true,則呼叫該components->startup方法(這裡enabled倒是可以通過beforefilter設 置),該方法也是components裡最重要的方法,比如auth就在這裡大作文章^_^ 

開始執行當前controller裡的action方法 

如果設定autorender為true,則根據呼叫當前controller的render()方法,否則返回或輸出action方法的返回的資料 

呼叫controller的render()方法時,先呼叫當前controller中的beforerender()方法 

載入檢視渲染類 

呼叫component->beforerender()方法,同樣,若系列components裡有這個beforerender方法並且該 component的enabled為true,則呼叫該components->beforerender方法(這裡enabled可以通過 beforefilter設定) 

獲取當前model的資料驗證錯誤資訊,給view使用 

呼叫view的render()方法 

載入相關helper助手 

呼叫helper的beforerender()方法 

呼叫helper的afterrender()方法 

相關的快取處理 

執行renderlayout()方法,當然前提你要允許渲染布局,預設為default.ctp布局檔案 

呼叫helper的beforelayout()方法 

呼叫helper的afterlayout()方法 

呼叫component->shutdown()方法,同樣,若系列components裡有這個shutdown方法並且該component的 enabled為true,則呼叫該components->shutdown方法(這裡enabled可以通過beforefilter設定) 

執行當前controller裡的afterfilter方法,這裡你可以對檢視的輸出內容($controller->output)做一些處理 

返回或輸出檢視資料。 

流程完畢。

cakephp載入流程

2 如果不是也會請求到那個檔案,所以web root就是入口檔案 入口檔案定義了全域性變數,定義了很多路徑相關的資訊,比如 web root css這裡實在是太多了 3 載入三個檔案 require cake basics.php require cake error ds exceptions.p...

爬蟲主要流程

第一種方法 response1 urllib2.urlopen url print response1.getcode 請求狀態碼 print len response1.read read爬取網頁資訊 print 第二種方法,新增頭部資訊,模擬瀏覽器訪問 request urllib2.reque...

滲透測試主要流程

和客戶進行溝通,做滲透測試的程度?為什麼要做滲透測試?做滲透測試中需要注意哪些避諱?客戶的業務主要是什麼?最關注什麼?測試範圍,哪些能測,哪些不能測?確定好測試的時間地點接待人等?免罪金牌 商量好出事故的責任承擔 收集所有的公開的資訊並且分析,查 ip?作業系統?指令碼語言?在該伺服器上有沒有其他的...