第一帖 Laravel 原始碼筆記 index.php

php_yt發表於2020-03-01

前言

非常喜歡這個論壇,這是開通部落格後的第一篇。本人接觸laravel一年有餘,但總感覺一團迷霧。最近心血來潮,想從頭看一遍原始碼。打算從入口檔案開始,邊探索邊整理,儘量簡潔明瞭。因php基礎並不好,讀原始碼估計會遇到困難,時間也會很漫長,也會有理解錯誤的地方。希望論壇前輩指正錯誤。對於新手,文章僅供參考,錯誤之處多多包涵。

入口檔案 index.php

第一句程式碼,程式執行的開始時間

define('LARAVEL_START', microtime(true));
/**
 * 程式開始時間
 * yt:返回當前 UNIX 時間戳和微秒數
 * echo microtime(); //0.80035500 1582688754
 * echo microtime(true); //1582688833.1706
 * 1秒(s) =1000 毫秒(ms) = 1,000,000 微秒(μs)
 */

第二句程式碼,類的自動載入 Laravel 原始碼筆記 Composer 自動載入

/*
|註冊自動載入程式
|--------------------------------------------------------------------------
|Composer提供了一個方便的、自動生成的類裝入我們的應用程式。
|我們只需要利用它!我們只需要簡單的在這裡require它
|這樣以後我們就不用考慮手動去載入我們的任何類
|如此的輕鬆感覺很棒。
|vendor供應商
 */
 require __DIR__.'/../vendor/autoload.php';

第三句程式碼,例項化服務容器 Laravel 原始碼筆記 2 App 服務容器

/*
把燈開啟
|-----------------------------------------------------
|我們需要照亮PHP開發,所以讓我們開啟燈。
|這將引導框架並準備使用它
|將載入此應用程式,以便我們可以執行它
|併傳送響應回到瀏覽器和讓我們的使用者喜歡。
|bootstrap引導 app應用
|$app 例項化的應用程式
*/

$app = require_once __DIR__.'/../bootstrap/app.php';

餘下程式碼

/*
|-----------------------------------------------------
執行應用
|-----------------------------------------------------
|一旦我們有了應用程式,我們就可以通過kernel(核心)處理傳入的請求並將相關的響應傳送回客戶端瀏覽器
|讓他們享受創意我們為他們準備的精彩的應用程式。
|Illuminate照亮 Contracts契約 Kernel核心 capture捕獲 terminate終止 handle處理
*/

//$app->make();從容器中例項化http-Kernel契約核心類的實現類
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

//handle()方法處理請求
$response = $kernel->handle(
    //通過核心處理 Request類捕獲請求後形成的request物件
    $request = Illuminate\Http\Request::capture()
);

//返回響應
$response->send();

//終止核心程式
$kernel->terminate($request, $response);
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章