• 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

  • 相关阅读:
    Asp.Net Core 进阶(一) —— 读取appsettings.json
    chrome控制台模拟hover、focus、active等状态,方便调试
    windows server 注意windows的temp目录
    (转)大公司里怎样开发和部署前端代码?
    排序算法——二分插入排序
    排序算法——归并排序
    排序算法——冒泡排序
    排序算法——插入排序
    排序算法——快速排序
    linux安装和配置 mysql、redis 过程中遇到的问题记录
  • 原文地址:https://www.cnblogs.com/derrck/p/1456579.html
Copyright © 2020-2023  润新知