理解 Laravel 框架生命週期

閱讀時間約 4 分鐘
學習框架前第一步,先理解框架的生命週期

學習完PHP程式基礎後,就會開始進入框架的學習,為了能理解Laravel框架是如何運作的,就必須清楚框架的生命週期,這也是面試時的必考題哦。

生命週期概述

根據官方文件的說明,Laravel 應用程序的所有請求的入口點都是public/index.php 文件。所有請求都由你的 web 服務器(Apache/Nginx)配置定向到此文件。那個 index.php 文件不包含太多代碼。相反,它是加載框架其餘部分的起點。

該 index.php 文件將加載 Composer 生成的自動加載器定義,然後從 bootstrap/app.php 中檢索 Laravel 應用程序的實例。 Laravel 本身採取的第一個操作是創建應用 / 服務容器 的實例。

raw-image
<?php

use Illuminate\Contracts\Http\Kernel;
use Illuminate\Http\Request;

define('LARAVEL_START', microtime(true));

if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) {
require $maintenance;
}

require __DIR__.'/../vendor/autoload.php';

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

$kernel = $app->make(Kernel::class);

$response = $kernel->handle(
$request = Request::capture()
)->send();

$kernel->terminate($request, $response);

接著我們來看程式碼

define('LARAVEL_START', microtime(true));是定義了一個名為 LARAVEL_START 的常數,它儲存了目前的時間,以微秒為單位,用於計算程式碼執行時間。

if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) { require $maintenance; },在於檢查是否存在一個叫做 maintenance.php 的檔案。如果這個檔案存在,它會被引入,並且這個應用程式將被設定為「維護模式」,這樣的話,應用程式將返回維護模式的相關回應。

require __DIR__.'/../vendor/autoload.php';這段主要引入 Composer 產生的自動載入檔案,這樣可以自動載入應用程式所需的所有類別和依賴。

$app = require_once __DIR__.'/../bootstrap/app.php';為引入應用程式的主要啟動檔案 app.php,這個檔案初始化並設定 Laravel 應用程式實例。

再來利用$app->make(Kernel::class); 實例化kernel物件並賦予到$kernel這個變數,並從應用程式實例中取得一個核心 Kernel 的實例,用於處理 HTTP 請求和回應。

$response = $kernel->handle($request = Request::capture())->send();而這一行是整個請求到回應處理的核心。首先,Request::capture() 創建了一個捕獲到的 HTTP 請求實例。接著,這個請求被傳遞給核心 Kernel 進行處理。handle 方法會處理請求,執行相關的中介層、路由和控制器,然後生成回應。最後,send 方法將回應送回給用戶端。

$kernel->terminate($request, $response);這段在整個請求到回應循環完成後,這一行用於終止核心 Kernel 的執行。這可能包括清理資源、關閉資料庫連接等。

總結:index.php 整段程式碼負責初始化 Laravel 應用程式,處理傳入的 HTTP 請求,執行相應的控制器和中介層,然後生成並傳送回應,最後在處理完成後進行清理工作,之後我們的 Web 服務器將等待下一輪用戶請求。


15會員
37內容數
學涯無止境,透過每日or每週模仿學習筆記,不管是哪些領域也好,總有一天也可以從菜雞變小雞
留言0
查看全部
發表第一個留言支持創作者!
DDDDD的沙龍 的其他內容
常說,科技始終來自於人性,而懶惰就是人創造東西的動力 為了解放雙手,創造更多時間價值,這邊我們要先理解什麼是crontab,並利用crontab的設定來幫我們處理例行性任務,並延伸到 aws EventBridge 去設定定時排程,去定時執行我們的爬蟲~
根據PHP官方說明,浮點數的精度有限。儘管取決於系統,PHP 通常使用 IEEE 754 雙精度格式,則由於取整而導致的最大相對誤差為 1.11e-16。非基本數學運算可能會給出更大誤差,並且要考慮到進行複合運算時的誤差傳遞。
最近開了複委託打算定期定額買美股,主要因為交割戶是設定外幣帳戶交割,先前設置了常用銀行的外幣到價通知,但是美金最近一直逆空高灰,幾乎不會啟動到價通知🥲,只好一直關注銀行即期價格,但因為上班常常會忘記要看一下外幣網銀換匯優惠,故想說練習python之餘,並順便做個爬蟲將資料發送到line群組
以前公司在對於 git 合併衝突的解法通常是將master合回自己的分支接著開發,也習慣了這種作法,但線圖就是有點醜,後來到了新公司之後規定強制要使用rebase的方式處理,在此紀錄git rebase 處理merge 衝突。
isset(), empty() 和 is_null() 是 PHP 中常用的三個函數,它們用於檢查變量是否已經設置或是否為空值。以下是它們的區別:
常說,科技始終來自於人性,而懶惰就是人創造東西的動力 為了解放雙手,創造更多時間價值,這邊我們要先理解什麼是crontab,並利用crontab的設定來幫我們處理例行性任務,並延伸到 aws EventBridge 去設定定時排程,去定時執行我們的爬蟲~
根據PHP官方說明,浮點數的精度有限。儘管取決於系統,PHP 通常使用 IEEE 754 雙精度格式,則由於取整而導致的最大相對誤差為 1.11e-16。非基本數學運算可能會給出更大誤差,並且要考慮到進行複合運算時的誤差傳遞。
最近開了複委託打算定期定額買美股,主要因為交割戶是設定外幣帳戶交割,先前設置了常用銀行的外幣到價通知,但是美金最近一直逆空高灰,幾乎不會啟動到價通知🥲,只好一直關注銀行即期價格,但因為上班常常會忘記要看一下外幣網銀換匯優惠,故想說練習python之餘,並順便做個爬蟲將資料發送到line群組
以前公司在對於 git 合併衝突的解法通常是將master合回自己的分支接著開發,也習慣了這種作法,但線圖就是有點醜,後來到了新公司之後規定強制要使用rebase的方式處理,在此紀錄git rebase 處理merge 衝突。
isset(), empty() 和 is_null() 是 PHP 中常用的三個函數,它們用於檢查變量是否已經設置或是否為空值。以下是它們的區別:
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
在Laravel的MVC架構中,視圖(View)是呈現資料給使用者的關鍵部分。本篇深入探討了視圖的基本概念、建立與管理、與資料的互動方式,以及Blade模板引擎的應用。Blade提供了一套強大的工具,使動態視圖建立更為高效。
Thumbnail
與其說是因為預期的差距導致股價漲跌,不如說是因為股價表現,才讓新聞(或投資人)去解讀市場的預期狀況,比較像事後看圖說故事的解釋。
Thumbnail
以長期投資角度而言,不一定需要在意中短期的股價波動,拉長時間來看,市場波動與景氣起伏都會回復正常,這種情況下投資風險關鍵問題是:投資人有能力確認企業競爭力嗎?持股成本真的夠低嗎?投資人不缺錢嗎?
Thumbnail
投資風險控管比較強調須控制持股比例,但這並不單純只屬於投資人自己控制的部分,而是與外在變數有很大的關聯性,外在環境不佳,才會讓投資人降低持股比例,中間涉及對於市場的判斷,對於市場的判斷能力才是關鍵
Thumbnail
會造成投資人嚴重傷害的意外,是在股價相對偏高價位時出現的意外,因為原本股價就已經高估,而且有些投資人已經累積一定的獲利幅度,有本錢可以不計價砍殺股票,這時期的股價拉回速度快且回跌空間大
Thumbnail
想像與現實的差距才是風險衍生的地方,股價出現漲勢是因為投資人想像未來企業獲利會變好,萬一現實不如想像所預期才是風險,投資人必須理解現實是甚麼情況,還得瞭解市場對於未來的想像是甚麼,才能知道想像與現實是否存在明顯差距,及其中可能的風險危機。
Thumbnail
這個決心就像千年岩石一般堅硬,毫無妥協的餘地。她的存在和文學信念之間,夾不進一絲毫的空隙。
Thumbnail
  自清朝結束後,中國本部的北京政府無力亦無心干預新疆事務,新疆形同政治自中國獨立出去,形同一閉關自守、自給自足的獨立王國。自民國元年(1912)到十七年(1928),統治這一個地方的人,是前清官僚出身的楊增新。他如何能保持新疆不受外力、軍閥進攻,維持內部十七年的長治久安呢?
Thumbnail
嫁給韓國老公之後,許多人愛問「韓國男人是不是很大男人?」我沒辦法給個黑白分明的答案,只能講幾個故事給大家聽聽…
Thumbnail
<p>中國文字與歷史文化和西方迥異而構成了巨大障礙,因此在歐美成長的人很難真正了解中國。而生長在中國、家人都在中國的人,又因政治因素不見得能得到信任。因此,台灣人的獨特處境,也許反而是個值得好好利用的機遇。</p>
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
在Laravel的MVC架構中,視圖(View)是呈現資料給使用者的關鍵部分。本篇深入探討了視圖的基本概念、建立與管理、與資料的互動方式,以及Blade模板引擎的應用。Blade提供了一套強大的工具,使動態視圖建立更為高效。
Thumbnail
與其說是因為預期的差距導致股價漲跌,不如說是因為股價表現,才讓新聞(或投資人)去解讀市場的預期狀況,比較像事後看圖說故事的解釋。
Thumbnail
以長期投資角度而言,不一定需要在意中短期的股價波動,拉長時間來看,市場波動與景氣起伏都會回復正常,這種情況下投資風險關鍵問題是:投資人有能力確認企業競爭力嗎?持股成本真的夠低嗎?投資人不缺錢嗎?
Thumbnail
投資風險控管比較強調須控制持股比例,但這並不單純只屬於投資人自己控制的部分,而是與外在變數有很大的關聯性,外在環境不佳,才會讓投資人降低持股比例,中間涉及對於市場的判斷,對於市場的判斷能力才是關鍵
Thumbnail
會造成投資人嚴重傷害的意外,是在股價相對偏高價位時出現的意外,因為原本股價就已經高估,而且有些投資人已經累積一定的獲利幅度,有本錢可以不計價砍殺股票,這時期的股價拉回速度快且回跌空間大
Thumbnail
想像與現實的差距才是風險衍生的地方,股價出現漲勢是因為投資人想像未來企業獲利會變好,萬一現實不如想像所預期才是風險,投資人必須理解現實是甚麼情況,還得瞭解市場對於未來的想像是甚麼,才能知道想像與現實是否存在明顯差距,及其中可能的風險危機。
Thumbnail
這個決心就像千年岩石一般堅硬,毫無妥協的餘地。她的存在和文學信念之間,夾不進一絲毫的空隙。
Thumbnail
  自清朝結束後,中國本部的北京政府無力亦無心干預新疆事務,新疆形同政治自中國獨立出去,形同一閉關自守、自給自足的獨立王國。自民國元年(1912)到十七年(1928),統治這一個地方的人,是前清官僚出身的楊增新。他如何能保持新疆不受外力、軍閥進攻,維持內部十七年的長治久安呢?
Thumbnail
嫁給韓國老公之後,許多人愛問「韓國男人是不是很大男人?」我沒辦法給個黑白分明的答案,只能講幾個故事給大家聽聽…
Thumbnail
<p>中國文字與歷史文化和西方迥異而構成了巨大障礙,因此在歐美成長的人很難真正了解中國。而生長在中國、家人都在中國的人,又因政治因素不見得能得到信任。因此,台灣人的獨特處境,也許反而是個值得好好利用的機遇。</p>