PHPer面試指南-Laravel 篇

本書的 GitHub 地址: https://github.com/todayqq/PH...

Laravel 做爲如今最流行的 PHP 框架,其中的知識較多,因此單獨拿出來寫一篇。php

  • 簡述 Laravel 的生命週期

Laravel 採用了單一入口模式,應用的全部請求入口都是 public/index.php 文件。laravel

  1. 註冊類文件自動加載器 : Laravel經過 composer 進行依賴管理,無需開發者手動導入各類類文件,而由自動加載器自行導入。
  2. 建立服務容器:從 bootstrap/app.php 文件中取得 Laravel 應用實例 $app (服務容器)
  3. 建立 HTTP / Console 內核:傳入的請求會被髮送給 HTTP 內核或者 console 內核進行處理
  4. 載入服務提供者至容器:

在內核引導啓動的過程當中最重要的動做之一就是載入服務提供者到你的應用,服務提供者負責引導啓動框架的所有各類組件,例如數據庫、隊列、驗證器以及路由組件。git

  1. 分發請求:一旦應用完成引導和全部服務提供者都註冊完成,Request 將會移交給路由進行分發。路由將分發請求給一個路由或控制器,同時運行路由指定的中間件
  • 服務提供者是什麼?
服務提供者是全部 Laravel 應用程序引導啓動的中心, Laravel 的核心服務器、註冊服務容器綁定、事件監聽、中間件、路由註冊以及咱們的應用程序都是由服務提供者引導啓動的。
  • IoC 容器是什麼?
IoC(Inversion of Control)譯爲 「控制反轉」,也被叫作「依賴注入」(DI)。什麼是「控制反轉」?對象 A 功能依賴於對象 B,可是控制權由對象 A 來控制,控制權被顛倒,因此叫作「控制反轉」,而「依賴注入」是實現 IoC 的方法,就是由 IoC 容器在運行期間,動態地將某種依賴關係注入到對象之中。

其做用簡單來說就是利用依賴關係注入的方式,把複雜的應用程序分解爲互相合做的對象,從而下降解決問題的複雜度,實現應用程序代碼的低耦合、高擴展。github

Laravel 中的服務容器是用於管理類的依賴和執行依賴注入的工具。數據庫

  • Facades 是什麼?
Facades(一種設計模式,一般翻譯爲外觀模式)提供了一個"static"(靜態)接口去訪問註冊到 IoC 容器中的類。提供了簡單、易記的語法,而無需記住必須手動注入或配置的長長的類名。此外,因爲對 PHP 動態方法的獨特用法,也使測試起來很是容易。
  • Contract 是什麼?
Contract(契約)是 laravel 定義框架提供的核心服務的接口。Contract 和 Facades 並無本質意義上的區別,其做用就是使接口低耦合、更簡單。
  • 依賴注入的原理?
這個不解釋,這是理解 IoC 容器的前提。
  • 談談 Laravel 和 YII 框架的區別
  1. 在 YII 框架中的路由是經過書寫 Controller、Action 間接定義路由,而 Laravel 中是在 route 路由文件中直接定義路由入口
  2. Laravel 提供 ORM 對象關係映射,使讀寫數據庫的操做更加簡單
  3. Laravel 提供更多的 Artisan 命令和腳手架開發
  4. Laravel 的 Composer 擴展包比 Yii 框架更多,開發更加高效
相關文章
相關標籤/搜索