Laravel框架關鍵技術解析(2)Laravel框架初識
主要包括程式的組織結構和三個重要環節,即路由、控制器和檢視。
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擴充套件。
相關文章
- 【Laravel】Laravel 框架關鍵技術解析·讀書筆記(二)Laravel框架筆記
- Laravel框架關鍵技術解析(3)redis資料庫,會話等Laravel框架Redis資料庫會話
- Laravel框架關鍵技術解析(1)元件化開發與composer使用Laravel框架元件化
- 《laravel 框架關鍵技術解析》學習筆記之裝飾者模式Laravel框架筆記模式
- Laravel 初識--模型關聯 2Laravel模型
- Laravel PHP 框架網站重建技術分析LaravelPHP框架網站
- Laravel 框架 day2Laravel框架
- 關於 Laravel 框架事件系統的一點認識Laravel框架事件
- 初識 Laravel 11Laravel
- golang web框架,golang版本laravel 框架GolangWeb框架Laravel
- swoole加速laravel框架Laravel框架
- 改進DevSecOps框架的 5 大關鍵技術dev框架
- Laravel 核心--深入剖析 Laravel 框架門面模式Laravel框架模式
- Sanic框架初識框架
- 初識MyBatis框架MyBatis框架
- Laravel 框架 day1Laravel框架
- Laravel 框架 day4Laravel框架
- Laravel 框架 day5Laravel框架
- Laravel 框架 day3Laravel框架
- Laravel-hprose (rpc 框架)LaravelROSRPC框架
- laravel-hprose(rpc框架)LaravelROSRPC框架
- Laravel框架生命週期Laravel框架
- Laravel 框架生成 Plist 資料Laravel框架
- 關於Laravel框架中Guard的底層實現Laravel框架
- Laravel 核心--深入剖析 Laravel 框架 Jwt 元件的實現原理Laravel框架JWT元件
- Laravel 框架學習心得體會Laravel框架
- Laravel框架中 getClientIps() 原理和用法Laravel框架client
- 安裝Laravel後臺生成框架Laravel框架
- 微服務框架相關技術整理微服務框架
- Django(1) - 初識Django框架Django框架
- Laravel 測試技術Laravel
- Laravel框架:通過自定義命令建立service服務層初體驗Laravel框架
- Laravel5.4 框架與 Laravel-admin 整合 Markdown 編輯器Laravel框架
- (踩坑)WSL2+docker+laradock 配置並安裝 Laravel 框架DockerLaravel框架
- 關於laravel 框架實現路由自動注入解決方法Laravel框架路由
- Laravel 5 框架效能最佳化技巧Laravel框架
- Laravel-Casbin:在 Laravel 裡使用 Casbin(PHP 許可權管理框架)LaravelPHP框架
- 技術實戰:初創專案前端框架選型前端框架