本書的 GitHub 地址:https://github.com/todayqq/PHPerInterviewGuide
Laravel 作為現在最流行的 PHP 框架,其中的知識較多,所以單獨拿出來寫一篇。
- 簡述 Laravel 的生命週期
Laravel 採用了單一入口模式,應用的所有請求入口都是 public/index.php 檔案。
註冊類檔案自動載入器 : Laravel通過 composer 進行依賴管理,無需開發者手動匯入各種類檔案,而由自動載入器自行匯入。
建立服務容器:從 bootstrap/app.php 檔案中取得 Laravel 應用例項 $app (服務容器)
建立 HTTP / Console 核心:傳入的請求會被髮送給 HTTP 核心或者 console 核心進行處理
載入服務提供者至容器:
在核心引導啟動的過程中最重要的動作之一就是載入服務提供者到你的應用,服務提供者負責引導啟動框架的全部各種元件,例如資料庫、佇列、驗證器以及路由元件。分發請求:一旦應用完成引導和所有服務提供者都註冊完成,Request 將會移交給路由進行分發。路由將分發請求給一個路由或控制器,同時執行路由指定的中介軟體
- 服務提供者是什麼?
服務提供者是所有 Laravel 應用程式引導啟動的中心, Laravel 的核心伺服器、註冊服務容器繫結、事件監聽、中介軟體、路由註冊以及我們的應用程式都是由服務提供者引導啟動的。
- IoC 容器是什麼?
IoC(Inversion of Control)譯為 「控制反轉」,也被叫做「依賴注入」(DI)。什麼是「控制反轉」?物件 A 功能依賴於物件 B,但是控制權由物件 A 來控制,控制權被顛倒,所以叫做「控制反轉」,而「依賴注入」是實現 IoC 的方法,就是由 IoC 容器在執行期間,動態地將某種依賴關係注入到物件之中。
其作用簡單來講就是利用依賴關係注入的方式,把複雜的應用程式分解為互相合作的物件,從而降低解決問題的複雜度,實現應用程式程式碼的低耦合、高擴充套件。
Laravel 中的服務容器是用於管理類的依賴和執行依賴注入的工具。
- Facades 是什麼?
Facades(一種設計模式,通常翻譯為外觀模式)提供了一個"static"(靜態)介面去訪問註冊到 IoC 容器中的類。提供了簡單、易記的語法,而無需記住必須手動注入或配置的長長的類名。此外,由於對 PHP 動態方法的獨特用法,也使測試起來非常容易。
- Contract 是什麼?
Contract(契約)是 laravel 定義框架提供的核心服務的介面。Contract 和 Facades 並沒有本質意義上的區別,其作用就是使介面低耦合、更簡單。
- 依賴注入的原理?
這個不解釋,這是理解 IoC 容器的前提。
- 談談 Laravel 和 YII 框架的區別
- 在 YII 框架中的路由是通過書寫 Controller、Action 間接定義路由,而 Laravel 中是在 route 路由檔案中直接定義路由入口
- Laravel 提供 ORM 物件關係對映,使讀寫資料庫的操作更加簡單
- Laravel 提供更多的 Artisan 命令和腳手架開發
- Laravel 的 Composer 擴充套件包比 Yii 框架更多,開發更加高效