zf 的訊息路由學習心得

2021-08-30 02:51:45 字數 1541 閱讀 2298

// begin dispatch

try

/*** dispatch request

*/try catch (exception $e)

$this->_response->setexception($e);

}/**

* notify plugins of dispatch completion

*/$this->_plugins->postdispatch($this->_request);

} while (!$this->_request->isdispatched());

重點**:

$router->route($this->_request);
$router為乙個zend_controller_router_rewrite物件,_request為乙個zend_controller_request_http物件,其封裝了乙個http請求,其中有乙個引數_requesturi,該引數為乙個請求的uri,其形式上可能為/index/index?parameter=value。該uri形式上有兩段,其中一段為pathinfo,一部分為queryinfo。

在zend_controller_router_rewrite有**如下:

// todo: should be an inte***ce method. hack for 1.0 bc  

if (!method_exists($route, 'getversion') || $route->getversion() == 1) else

if ($params = $route->match($match))

其中$match為pathinfo,即/index/index。$router為乙個zend_controller_router_route_module物件,物件中函式match返回乙個陣列 ["controller"]=> string(5) "index" ["action"]=> string(5) "index" ["module"]=> string(7) "default"。match函式部分**如下:

$this->_setrequestkeys();

$values = array();

$params = array();

if (!$partial) else

if ($path != '')

其中:

self::uri_delimiter
是乙個const,定義如下:

const uri_delimiter = '/';
於是返回如上所示陣列。zend_controller_router_rewrite物件中使用了函式_setrequestparams設定module、controlloer和action的名稱。

於是在類zend_controller_front中的_request中已經具備了router的資訊條件。

未完待續。

學習心得 我的學習心得

我是乙個已經步入中年的70後,離開校園已經20年了,因為當年的政策因素而未能圓我的大學夢,在20年的工作過程中總是因為缺少一張大學文憑而失去了很多機會,曾經也考慮過自考,但是乙個人去面對的時候總感覺心有餘而力不足。2018年3月份偶然讓我認識了尚德,原來自考還可以這樣學習。一直懷疑自己年紀大了記憶力...

學習心得 python學習心得

自從來了深圳工作以後,尤其是屢屢面試碰壁以後。發現其實自己的知識面很窄,做筆試題的時候絞盡腦汁還是漏洞百出,並不是不會做,而是出現一大堆不該有的失誤。每次被問道,對資料庫了解嗎?說一大堆看起來很高階的東西 好啊,那我們寫幾個sql語句吧。馬上完蛋了,沒了手冊關鍵字都記不起。了解哪幾種指令碼語言,sh...

俺的學習心得

也是乙個初學者,工作一年了,畢業後就來了這家單位,一開始是做前台介面設計的,我認為我在這方面實在沒天賦。半年後開始接觸asp,以前的乙個同事做的專案有不少漏洞 無貶義,他也是新手 我就做一些維護的工作,這樣就可 以讀到完整的 還有一位.net高手,不懂的就問他,但是他不怎麼懂asp 沒從事過 很多問...