Laravel框架關鍵技術解析(2)Laravel框架初識

CopperDong發表於2018-04-01

     主要包括程式的組織結構和三個重要環節,即路由、控制器和檢視。

2.1 目錄組織結構



2.2 Laravel框架中的設計模式

    當你沒有學一門更好的程式語言之前,你一直以為自己所用的是最好的。

    服務容器:可以將服務理解為系統執行中需要的東西,如物件、檔案路徑、系統配置等,服務容器就是這些東西的載體,在程式執行過程中動態地為系統提供這些服務,也可以看做是提供這些資源。

    工廠模式

    IoC模式:控制反轉是將元件間的依賴關係從程式內部提到外部容器來管理,而依賴注入是指元件的依賴通過外部以引數或其他形式注入。


2.3 請求處理管道簡介

    利用服務容器和服務提供者解決依賴注入及資源獲取的功能,有了它就可以隨時獲取需要的服務,實現想要的功能。

    裝飾者模式:以Laravel框架為例,在解析請求生成響應之前或之後需要經過中介軟體的處理,主要包括驗證維護模式、Cookie加密、開啟會話、CSRF保護等。在實際開發過程中有可能還需要新增新的處理功能,而這種需求正好可以被裝飾者模式解決。


2.4 請求到響應的生命週期

    總之學習一項新技術總是要經歷迷霧的階段,這個階段沒有什麼好方法,死記硬背記住一些概念就好了,不要急,很快就要清晰了。

    程式啟動準備:入口檔案,


    請求例項化:客戶端傳送的一個請求報文,這個報文包括請求行、請求首部和請求實體。

    開源提倡”不必重複發明輪子“‘

    處理請求

    中介軟體

    響應的傳送與程式終止

2.5 服務容器與服務提供者

       當需要完成某些功能時,服務容器會通過服務提供者註冊的服務完成相應的準備,如功能模組的例項化及引數配置等,然後會呼叫準備好的功能模組實現相應的功能。在Laravel框架中,服務容器只有一個,相當於人的一個大腦,而服務提供者遍佈整個框架的各個功能模組內。

        服務容器:由Illuminate/Container/Container類實現的,該類實現了服務容器的核心功能,而Illuminate/Foundation/Application類繼承了該類,主要實現了服務容器的初始配置和功能擴充套件。

        服務繫結:一個服務和一個關鍵字進行繫結,對於繫結服務的不同,需要服務容器中不同的繫結函式來實現,主要包括回撥函式服務繫結和例項物件服務繫結。

        服務解析:獲取服務容器物件,通過服務容器實現對應服務的解析。

        服務提供者:Laravel框架是通過服務提供者來解決服務繫結問題的,在每個功能模組中都有一個服務提供者,而服務提供者都繼承了框架提供的Illuminate/Support/ServiceProvider抽象類,該抽象類中提供一個虛擬函式register(),所以具體類需要實現register()函式,而該函式就是用於服務繫結的。

2.6 請求與響應的操作

     請求引數的獲取

        

       HTTP響應:包括請求報文的請求行、首部欄位和主體三部分,而對於HTTP響應例項的生成,也可以看做是對響應引數的封裝過程,包括響應報文的起始行、首部欄位和主體三部分,最終生成的響應例項物件常用屬性及儲存內容。


2.7 資料庫及操作

        對於伺服器程式的設計,資料庫是很重要的一部分,對應資料庫介面設計的好壞決定了擴充套件性、開發效率和執行效率。Laravel框架通過統一的介面實現對不同資料庫操作的封裝,使得對資料庫的連線和操作變得非常容易,與資料庫相關的配置在檔案“config/database.php”中,可以通過修改配置檔案來決定到底使用何種資料庫。目前,Laravel框架支援MySQL、Postgres、SQListe和SQL Server四種資料庫。

        Laravel的資料庫遷移:定義了一個統一的介面來實現資料庫架構的建立和維護,而這種統一的介面與底層的資料庫及其操作語言都是無關的,Laravel中通過PHP語言來定義這些介面並實現資料庫架構的描述,當需要將這個資料庫架構移植到所支援的資料庫後端時,只需要執行這個描述檔案就可以了,這樣就為資料庫架構的修改和維護提供了極大的方便。



   查詢構造器:Laravel關於資料庫操作的底層使用的就是PDO擴充套件。



相關文章