iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0
佛心分享-IT 人自學之術

後端小白自學 Laravel系列 第 2

第 2 天:Laravel 啟服務與請求的生命週期

  • 分享至 

  • xImage
  •  

創建一個新的 Laravel 項目


跟第一天不一樣的地方在開發環境中已經安裝了 PHPComposer 和一個資料庫(如 MySQL)的條件下,可以省略直接進入安裝 Laravel 對應版本即可!

Step 1:安裝 Laravel
使用 Composer 安裝 Laravel,下指令 composer create-project --prefer-dist laravel/laravel 項目名稱 後會建立一個新的 Laravel 項目,並下載所需的依賴。

☆ 如果要最新版本,可以直接下指令 composer create-project --prefer-dist laravel/laravel 項目名稱

Step 2:配置環境

🐘 補充說明:因為我還在學習中,目前使用 sqlite (輕量級、嵌入式的資料庫系統),所以有些夥伴問為什麼不要直接用海豚或是鬆餅?都可以,只是我先選擇這個,之後會再把 mySQL 的知識點補齊!
logo

  1. 下指令 cd 項目名稱 進入專案目錄。
  2. 下指令 cp .env.example .env 複製 .env.example 文件為 .env 文件,這個 .env 檔案包含了環境變數配置。
  3. 配置你的資料庫連線和其他環境變數,例如:
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    # DB_DATABASE=資料庫名稱
    # DB_USERNAME=資料庫使用者名稱
    # DB_PASSWORD=資料庫密碼
    

🐘 補充說明:
只要開新的專案就一定要做 .env 環境設定,不是做第一次就不用了!
唯獨不用重做的是 PHPComposer 的安裝流程,只要確定電腦安裝過,重開新的專案才不用跑這些流程唷!

Step 3:啟動開發伺服器
Laravel 自帶一個開發伺服器,可以用指令php artisan serve,預設情況下,開發伺服器會在 http://localhost:8000 上運作。
啟服務

如果有不同專案要啟動,建議每個專案啟動一個開發伺服器,用指令 php artisan serve --port=8001 使用不同的連接埠來避免衝突。

Step 4:存取和開發
打開瀏覽器,到http://localhost:8000查看 Laravel 網站,如果一切設定正確,應該會看到 Laravel 的歡迎頁面。
 Laravel 的歡迎頁面

Step 5:使用版本控制
為了更好地管理項目,可以使用版本控制系統,如:git,這樣可以追蹤專案的更改並進行協作

git init
git add .
git commit -m "Initial commit"

Laravel 請求的生命週期


安裝好之後,延續前一天的目錄架構,透過請求的生命週期了解 Laravel 工作原理。

Laravel 的請求生命週期

  1. Request:前端或是後端自己發出請求就是一個 sent request
    -> kuku 要買一杯無糖綠
  2. Server:Laravel 應用程式託管在 apache 或 nginx 等 web 伺服器上時,web 伺服器會將所有請求導向至 public/index.php 檔案當應用程式的起點,所有對應用程式的請求都透過它進行路由
    -> 店員(伺服器)收到請求,操作 POS 機選擇品項(啟服務執行任務)
  3. public/index.php:加載框架其餘部分的起點,載入 Composer 產生的自動載入器定義
    -> POS 機啟動
  4. bootstrap:Laravel 本身採取的第一個操作是建立和回傳應用程式/服務容器的實例
    -> POS 機收到啟動找出店內的飲料區 menu
  5. HTTP/Kernel.php:幾乎所有處理進入應用程式的請求的邏輯都將放在這個目錄中,所有請求都一定會經過他們,然後傳回相關回應
    -> 如果沒有需要經過 middleware(守門員)的驗證(促銷活動還是會員),這裡就是產出餐飲清單
  6. Service Providers 服務提供者 - register():所有由 Laravel 框架所提供的所有主要特色都是由服務供應器來引導並進行設定,因此可說是在整個 Laravel 引導過程中最重要的部分,完成該服務供應器的實例化,在所有提供者上呼叫該方法,註冊了所有提供者
    -> 有點像是前端的 Prmoise 概念,要先經過基本要求準備,像開瓦斯煮茶
  7. Service Providers 服務提供者 - boot():一旦註冊了所有提供者,boot 就會在每個提供者上呼叫該方法,啟動服務
    -> 這裡就是接續 Promise 後的 .then() ,也就是茶煮好了,依照茶水比例啟動服務
  8. dispatch request 派遣需求:一旦所有服務提供者都被引導,它將把請求移交給路由器進行調度
    -> 畫面交還給店長指派夥伴製作飲料
  9. Router:在引導過程中,Router 會引導 RouteServiceProvider 執行任務,路由又會根據規則來判斷要把這個請求分配給哪一個控制器的哪一個方法來處理
    -> 店長指派冷飲區夥伴製作飲料
  10. Controller 中介層:提供了一個便利的機制來過濾或者是驗證 HTTP 請求,通過之後 middleware 就會允許它通過到下一關,直到進入應用裏頭
    -> 冷飲區夥伴接收到訊息開始進入製作環節
  11. View:當回應通過了所有中介層,HTTP 核心的處理方法就發出回應物件,而 index.php 檔案就會呼叫回應的 send() 發出回應內容到使用者網頁瀏覽器
    -> 出貨前檢查,並且把飲料交給消費者

參考文件:Laravel請求的生命週期

✍🏻 每日任務


說明 web.phpapi.php 的差異

  1. web.php 文件
    • 通常用於定義 Web 界面的路由,這些路由通常返回 HTML 視圖。
    • 常見的應用包括用戶註冊、登入、訪問特定頁面等。
    • 中間件群組如 web 中的 EncryptCookiesVerifyCsrfTokenShareErrorsFromSession 都會應用於這些路由。
    • 包含了一些 Laravel 預設的路由,如註冊、登入、密碼重置等,這些路由通常使用 Route::getRoute::post 等HTTP方法。
  2. api.php 文件
    • 用於定義 API 的路由,這些路由通常返回 JSON 或其他格式的數據。
    • 常見的應用包括提供 API 服務的端點,像是…用戶資料的 CRUD 操作、發送郵件等。
    • 中間件群組如 api 中的 throttleauth:api 等是用於 API 請求的。
    • 通常不包含基本的身份驗證路由(如登入、註冊),這些通常在前端應用程序或另一個身份驗證方式下處理。

上一篇
第 1 天:Laravel 簡介與環境配置
下一篇
第 3 天:路由基礎
系列文
後端小白自學 Laravel21
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
kuku
iT邦新手 4 級 ‧ 2024-09-07 12:16:20

使用版本控制的部分,幾行帶過似乎有點草率,主要是因為之前分享過,如果需要詳細流程,可以參考 2023 年的 Vue 元素美麗的轉變:前端小萌新勇闖套件的魔法陣 旅程最終回 - vite 部署到 GitHub,過程中有其他疑問或是遇到奇怪的事情,可以再提出一起討論,讓我們一起成長吧!

我要留言

立即登入留言