中介軟體的壓棧流程並不複雜,柚子心中大概也有個思路,這裡畫出草圖:
中介軟體在呼叫時會現獲取最後的中介軟體(匿名函式物件),然後根據中介軟體之間的關聯自動進行呼叫。
/**
* 呼叫中介軟體
* call middleware stack
** @param serverrequestinte***ce $request a request object
* @param responseinte***ce $response a response object
** @return responseinte***ce
*/public function callmiddlewarestack(serverrequestinte***ce $request, responseinte***ce $response)
/** @var callable $start */
// 取出棧頂元素(閉包),取的過程要鎖棧,取出之後再開啟
// 鎖棧的過程是不可增加中介軟體的
// 呼叫過程也是從tip,最後那個中介軟體開始呼叫
$start = $this->tip;
$this->middlewarelock = true;
$response = $start($request, $response);
$this->middlewarelock = false;
return $response;}}
Slim研讀筆記二之造一款Slim應用
工欲善其事,必先利其器。柚子意圖研讀slim框架,若沒有乙個好的slim應用,也會顯得無從下手。所以,研讀第一步是 造一款slim應用。在我們即將要建立的slim應用中,用到了 twig模板引擎 monolog日誌管理元件 eloquent資料庫orm元件 這些都是柚子做專案時經常用到的元件,隨著框...
Slim研讀筆記七亂入篇之Monolog(上)
最近兩天,我的同事小濤濤因開發需要,急需乙個日誌系統來記錄日誌。所以,從這節開始我們講解monolog,深入理解下monolog的使用方式與實現原理。在開始研讀之前,我們需要理清二個概念異常和錯誤。異常是exception類的物件,在遇到無法修復的狀況時丟擲 例如,遠端 api 無響應,資料庫查詢失...
Slim研讀筆記七亂入篇之Monolog(補)
monolog是最為廣泛的php日誌庫,它有幾十個處理程式可記錄日誌到不同的程式中。柚子前段時間也曾寫過一篇關於monolog研讀博文,分析了monolog最重要兩個類中的關鍵 這節,介紹一些實用性的東東,譬如 如何用monolog開發elk可以使用的日誌。logstash是乙個開源的日誌管理工具,...