zoukankan      html  css  js  c++  java
  • CakePHP處理HTTP Request 典型的流程

    圖片來源:A Typical CakePHP Request

    參考資料: A Typical CakePHP Request

    上圖其實也說明了MVC的架構概念以及處理流程!

    1. 使用者瀏覽網站(例加:瀏覽 /cake/buy,cake是controller, buy是action,也就是呼叫cake_controller.php 中的 buy函式),這時 your_cakephp1.2/app/webroot/index.php 會收到經由 mod_rewrite 轉換的網址(mod_rewrite會將 /cake/buy 轉成 index.php?url=/cake/buy),在index.php中,使用Dispatcher(your_cakephp1.2/cake/dispatcher.php),把網址傳給Dispatcher。以下是index.php的部分程式碼:

    $Dispatcher = new Dispatcher();
    $Dispatcher->dispatch($url);


    2. Dispatcher中,透過Router (your_cakephp1.2/cake/libs/router.php),取得Controller和Action的名稱。

    3. 在開始使用Controller的Action之前,先呼叫這個controller的beforeFilter(也就是圖上 Controller的藍色框所表示的意思)。

    4.5.6. 經過 controller 的 beforeFilter 之後,開始呼叫 Action 函式,一般在Action 函式中,會使用者Models來處理資料庫相關的工作,用Components處理像Cookie, Session的相關工作,視你的程式而定,最後將資料透過 set() 的方式,傳給 View 處理。

    7. 在View處理版型前,會呼叫 controller 的 beforeRender (也就是 7 箭頭上的藍框)。一般網頁的版型,會有layout、element和自身action的view版型組成,其中會使用helper來協助處理版型。

    8. 在處理完版型,回覆給使用者前,Dispatcher會再呼叫 controller 的 afterFilter (也就是 8 箭頭上的藍框。註)


    以上就是很典型CakePHP處理Request的流程。


    註:

    CakePHP官網上說明 Controller 有四個callback函式:beforeFilter, beforeRender, afterRender, afterFilter。不過我在 cake/libs/controller/controller.php 找不到afterRender的定義,也找不到afterRender使用的地方,不知道是我還沒讀透程式碼,還是官方誤植了這個函式。因此上圖的8 箭頭的另一個藍框,應該是指afterRender。

    原文:http://otaku.kigi.tw/2008/03/cakephphttp-request.html

  • 相关阅读:
    天梯赛 社交集群(并查集)
    蓝桥杯 正则问题(dfs)
    天梯赛L3-001. 凑零钱(01背包记录物品)
    天梯赛/PAT 二叉树总结
    GPLT天梯赛 L2-022. 重排链表
    蓝桥杯 2的次幂表示(递归)
    排列与组合的一些定理
    卡特兰数
    洛谷P1349 广义斐波那契数列(矩阵快速幂)
    Manacher's Algorithm 马拉车算法(最长回文串)
  • 原文地址:https://www.cnblogs.com/derrck/p/1456579.html
Copyright © 2011-2022 走看看