iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0
自我挑戰組

我推的Laravel系列 第 21

【Day-20】我推的Laravel-進階篇-Lifecycle in Laravel

  • 分享至 

  • xImage
  •  

簡介

Lifecycle是甚麼?程式也有生命嗎?
是的,每一段程式都會有起點和終點
今天是進階篇最後一篇,透過Lifecycle為這篇章畫下句點

Lifecycle

為甚麼要知道Lifecycle,Lifecycle在Laravel是怎麼運作的,Lifecycle是甚麼呢

why

了解Lifecycle可以整個程式的工作流程,並在正確的地方加入所需的邏輯,當然也包括測試與排查

how

要了解Laravel的Lifecycle,當然還是從官方文件

這裡討論的是Request的Lifecycle,你問說還有別的嗎? 能想到的就是artisan command,這和Request就不一樣了

  1. 起點為public/index.php,有設定過nginx就會知道,這裡index.php並不會有太多的程式碼,而是加載框架的起點,載入composer autoload(/vendor下),然後從bootstrap/app.php自行建立application / service container的實例
    聽起來很複雜,不過這部分不太會動到,都是由Laravel自行處理好的
  2. 現在Requst進入到,HTTP kernel或者console kernel,取決於Request類型,這兩個kernel會當作Request的中繼(心)站,不過我們主要看HTTP kernel,位於app/Http/Kernel.php
    Illuminate\Foundation\Http\Kernel的bootstrappers包含了,引導程式配置錯誤處理、配置日誌記錄、偵測應用程式環境以及執行實際處理請求之前需要完成的其他任務
    這部分也大致上不用動
    middlware在這裡定義,但尚未使用,之前說過有預設的也可以自行新增,上次的例子讓讀者了解到middlware除了接收到Request時可以控制,在回傳前也可以
  3. Service Providers,之前也說過了,位於config/app.php
  4. Routing,App\Providers\RouteServiceProvider,之前也說過,可以在這裡新增自己的路由檔案,接著就會通過middlware再來路由進入到可能是Controller等
  5. 如果Controller回傳,response會在通過middlware一次
  6. 最後HTTP kernel的handle會回傳response物件然後index.php會呼叫send,回傳method和資料
  7. 完成!

what

看到這裡可以知道Lifecycle是甚麼了吧,框架給我們非常便捷的使用

在Laravel中,生命週期通常指的是一個HTTP請求的處理過程,包括請求到達伺服器、路由解析、中介軟體處理、控制器執行、視圖渲染和回應傳回給客戶端等過程

了解後才可以深入應用,不只在Laravel,不只在程式語言

總結

就這樣,進階篇,完結灑花,接著進入實戰篇(頭痛
明天見,不見不散


上一篇
【Day-19】我推的Laravel-進階篇-Session & Cookie
下一篇
【Day-21】我推的Laravel-實戰篇-Laravel 10 新功能
系列文
我推的Laravel31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言