zf工作流程

2021-05-22 20:56:27 字數 2275 閱讀 5439

zend_controller是使用mvc模式來構建乙個站點的基礎。zend_controller體系是乙個輕量的,模組化和可擴充套件的體系。它只提供最核心的必要的部分,允許開發者有很大的自由來靈活地構建自己的站點。使用zend_controller的站點,其檔案組織和**結構會比較相似。

zend_controller 的工作流(workflow)是通過幾個元件來實現的。雖然不需要完全理解這幾個元件的含義,如果你對工作流程有點了解是很有幫助的。

zend_controller_front是zend_controller_controller體系的組織者,它是frontcontroller設計模式的實現。zend_controller_front處理伺服器接受的所有請求,並最後負責將請求分配給各個actioncontroller(zend_controller_action)

zend_controller_request_abstract用於處理使用者請求,提供各種類方法來設定和獲得controller和action的名稱及各種請求的引數。另外,它可以跟蹤其中的action是否已經被zend_controller_dispatcher分配。本抽象類的子類可用於封裝整個請求環境,允許router從中獲取使用者請求相關資訊,或設定controller和action的名稱。

預設的router是zend_controller_router,它將乙個zend_controller_request_http指定的uri分解成controller,action和引數。例如:urlhttp://localhost/foo/bar/key/value將被分解成foo controller, bar action,並帶有引數key,引數值為value.

zend_controller_dispatcher_inte***ce介面用於定義dispatcher(分配器,或稱排程器、派遣器等)。 「分配」是指從request物件中獲取controller和action的名稱,並對映到controller檔案/類及其中action類方法的過程。如果controller或action不存在,會將請求分配到預設的控制器和方法進行處理。

實際上分配過程包括初始化controller類和呼叫類方法。和路由不一樣,路由只發生一次,而分配是乙個迴圈發生的過程。如果request物件的分配狀態被重設為false,則迴圈就會重複,呼叫request中設定的方法。如果request物件的分配狀態被設定成true,則分配過程結束。

預設的dispatcher是zend_controller_dispatcher。它規定了控制器類命名首字母大寫,並以controller結尾,而action方法則是首字母小寫,以action結尾,例如: somefoocontroller::baraction. 在例子中,控制器是somefoo,而action是bar.

在上面的例子中,我們指定了』user』模組,並呼叫其中的news控制器。dispatcher會將其解釋成user_newscontroller類,並在user/newscontroller.php檔案中尋找該類。

module非常有用,當你想把**分散到子目錄中去的時候,或者使用第三方**時,或者在不同的應用中重用相同的控制器時。

zend_controller_action是最基本的控制器。每個具體的控制器都是從zend_controller_action類繼承而來,是zend_controller_action的子類,並且有自己的action方法。

zend_controller_response_abstract定義了基礎的響應類,用於收集並返回action的響應,包括響應的頭部(header)和主體(body),由於它使用了 __tostring()方法,所以可以直接用echo來一次性輸出所有header和內容。

預設的響應類是zend_controller_response_http,它很適合於http環境下使用。

zend_controller的工作流程相當簡單。zend_controller_front接收乙個請求,然後由zend_controller_router來決定分配給哪個controller。zend_controller_router把uri分解,便於設定請求中的controller和action的名稱。zend_controller_front接著進入乙個分配迴圈,呼叫zend_controller_dispatcher,把dispatcher傳給request,來呼叫請求中指定的具體的(或缺省的)controller和action進行處理。在controller結束後,又把控制權交加給 zend_controller_front。如果controller發現需要呼叫另乙個controller(request的分配狀態被清零),迴圈會一直繼續直到另一次分配執行完畢。

Struts工作流程

文章分類 招聘求職 乙個使用者的請求是通actionservlet來處理和 的。那麼,actionservlet如何決定把使用者請求 給哪個action物件呢?這就需要一些描述使用者請求路徑和action衍射關係的配置資訊了。在struts中,這些配置對映資訊都儲存在特定的xml檔案struts c...

spring MVC 工作流程

1 首先來配置一下dispatcherservlet spring mvc和大部分mvc框架一樣,底層也是依賴servlet api的,所以spring mvc的請求處理也是從乙個servlet開始,這個servlet就是dispatcherservlet.以下是在web.xml中dispatche...

Nutch工作流程

nutch工作流程 建立初始url集合分析 超連結是指機械人程式根據網頁鏈到其他網頁中的超連結,就像日常生活中所說的 一傳十,十傳百 一樣,從少數幾個網頁開始,連到資料庫上所有到其他網頁的鏈結。理論上,若網頁上有適當的超連結,機械人便可以遍歷絕大部分網頁。站長提交是指在實際執行中,爬蟲不可能抓取到所...