// 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 沒從事過 很多問...