原创 Slim研讀筆記七亂入篇之Monolog(補)

Monolog是最爲廣泛的PHP日誌庫,它有幾十個處理程序可記錄日誌到不同的程序中。柚子前段時間也曾寫過一篇關於Monolog研讀博文,分析了Monolog最重要兩個類中的關鍵代碼。這節,介紹一些實用性的東東,譬如:如何用Monolog開

原创 Slim研讀筆記七亂入篇之Monolog(中)

上節,我們簡單介紹了異常和錯誤的區別和處理,這節我們一起來看處理日誌的神器Monolog的具體實現。 // 在容器中註冊Monolog日誌組件 $container['logger'] = function($c) { // 生成

原创 Slim研讀筆記六之應用主體(中)

你可以在你的 Slim 應用之前(before) 和 之後(after) 運行代碼來處理你認爲合適的請求和響應對象。這就叫做中間件。爲什麼要這麼做呢?比如你想保護你的應用不遭受跨站請求僞造。也許你想在應用程序運行前驗證請求。中間件對這些場

原创 Slim研讀筆記七之應用程序中間件(下)

中間件的壓棧流程並不複雜,柚子心中大概也有個思路,這裏畫出草圖:中間件在調用時會現獲取最後的中間件(匿名函數對象),然後根據中間件之間的關聯自動進行調用。  /** * 調用中間件 * Call middlewar

原创 Slim研讀筆記七亂入篇之Monolog(上)

最近兩天,我的同事小濤濤因開發需要,急需一個日誌系統來記錄日誌。所以,從這節開始我們講解Monolog,深入理解下Monolog的使用方式與實現原理。在開始研讀之前,我們需要理清二個概念異常和錯誤。 異常 異常是Exception類的

原创 Slim研讀筆記七之應用程序中間件(上)

柚子以爲,面對未知問題的求證過程應是: 首先,根據問題大量大膽猜測,幻想可能的答案。然後,一步步精確的求證。不急功近利,不以偏概全,而應環環相扣,循序漸進。之後,根據大量事實總結出客觀規律。方可達到知其然且知其所以然。  通過文檔可知,

原创 Slim研讀筆記五之依賴注入容器(上)

上節,我們邁出了前進的一小步—Composer研讀,瞭解了Composer組件加載機制。從這節開始,我們學習Slim幾大核心模塊—依賴注入容器、路由、中間件等。 依賴注入容器可以注入一些服務,主要用於解決組件之間的依賴關係。Slim支持

原创 Slim研讀筆記五之依賴注入容器(中)

“一步一步走,心急吃不來熱豆腐呦”    —郭X村口大爺 這節我們繼續讀上節沒讀完的代碼。上節我們說到,應用主體傳入了一個屬性container,屬性值爲容器實例。然後,我們又瞭解了該容器類繼承自Pimple容器實現自Container

原创 Slim研讀筆記七亂入篇之Monolog(下)

Monolog將您的日誌發送到文件,Socket,收件箱,數據庫和各種Web服務。  特殊的處理程序允許您構建高級日誌記錄策略。 該庫實現了可以在自己的庫中提示的PSR-3接口,以保持最大的互操作性。 您也可以在您的應用程序中使用它,以確

原创 Slim研讀筆記六之應用主體(上)

之前柚子曾將\Slim\App稱之爲應用主體,應用主體可理解爲貫穿應用程序執行生命週期最重要的那個類。這節,我們詳細說明Slim應用主體的相關屬性和方法。 在介紹應用主體之前,我們先介紹phpStorm的一個強大功能,查看類、接口繼承

原创 Slim研讀筆記八之外觀模式(上)

今天柚子深入學習了Laravel的外觀模式,這節讓我們帶着問題去學習Slim的外觀模式。 問題1.外觀模式爲何可以快速指定到類? 問題2.Slim如何集成外觀模式? 問題1 外觀模式大量使用PHP的後期靜態綁定即父類定義的屬性子類可以

原创 Slim研讀筆記八之路由(上)

從這節開始,我們開始研讀路由。每個框架都會有路由,Slim框架的路由略微特殊,其路由功能是集成在應用主體中的。Slim 提供了快速強大的路由器,它能將路由映射到特定的 HTTP 請求方法和 URI 。它支持參數和模式匹配。 Slim路由也

原创 Slim研讀筆記八之路由(下)

跟隨上節的腳步繼續研讀代碼。上節查看到了Slim/Router類的map方法。這節讓我們根據一個請求的執行過程具體學習下這個路由的核心類。  /** * 增加一個路由 * Add route *

原创 Slim研讀筆記八之路由(中)

這節,我們承接上節繼續研讀Slim路由部分。我們首先由map函數進行延伸,因爲get()、post()、any()等函數均是封裝的此函數。 /** * 使用多種請求方法增加路由 * Add route wit

原创 Slim研讀筆記五之依賴注入容器(補)

上節,我們研讀了Pimple容器的具體實現,這節我們來查看Slim默認容器的實現細節。簡單瀏覽代碼我們可知,Slim默認容器其實就是對Pimple容器進行的一層封裝。前面我們已知Slim\Container完成了集成默認配置項,註冊默認服