Laravel 導覽與生命週期
其實 Laravel 作為 php 的框架,其實本質還是 php。當我們在第一天準備環境的時候,我們建立了一個 blog 的資料夾。裡面資料夾分別如下:
app/
:我們主要工作的資料夾之一bootstrap/
:Laravel 相關啟動的資料夾,基本上我們不會動這裡config/
:如果你有什麼固定的需要設定的,可以寫在這裡,有需要的話才會需要在這裡工作database/
:關於建立 table、建立假資料的都在這裡public/
:進入點,以及前端編譯後的資料都會放在這裡resource/
:blade、以及編譯前的 js 會放在這裡routes/
:定義路由的地方,主要工作的資料夾之一storage/
:檔案存放、log 的地方test/
:顧名思義就是測試的地方vendor/
:composer 的資料夾,地位有點像是 npm 的 node_modules/ ,基本上這裡連動都可以不用動- `其他檔案:.env、.env.example、artisan 等等等
你看到很多個資料夾不用太緊張,就如同我上面說明的一樣,你主要會工作的資料夾就那幾個,其他能不動就不動,真的有需要才會進去裡面。
而在第一段的時候我們也說到 Laravel 的本質就是 php,所以其實我們可以試著打開進入點 public/index.php 來看看,你會發現大部分都是註解,真正重要的 code 只有幾行以下我就直接略過註解直接貼 code 給你們看
|
|
接下來請讓我看 code 說故事一樣
- 定義了一個 Laravel_START 的常數
- 把 composer 的檔案引入進來
- 剛剛說到了,bootstrap 是 Laravel 很重要的啟動檔案,所以他把它引入並且賦予給$app
- 啟用了這個$app make的方法把http\kernel這個class實例出來,賦予給$kernel
- $kernel handle 賦予的$request ,並交給 response
$response->send()
$kernel
terminate 這個 request 和 response…
我果真很會看 code 說故事呢,自己都自己看不是很懂如果不懂也沒關係,但你跟著我這樣看程式碼就大概知道一下 laravel 的啟動到底是怎麼一回事。
其實官方文件也有關於他週期的相關說明,礙於篇幅關係我也沒辦法寫得太多,只能這樣簡單帶過…總之 Laravel 在被啟動的時候其實做了很多事情,分別就是走上面的流程,而在 bootstrap 和 kernal 裡面也定義了許多東西與方法,我這裡先點出一個 middleware,這在我們之後會更加詳細說明
如果你希望更深入了解的話可以參考以下文章:
- 英文文件:https://laravel.com/docs/6.x/lifecycle
- 你也可以看中文文件:
或者去年的鐵人賽也有一組主題在講 laravel 的原始碼,我自己是有訂閱的(不過我還沒看完)Laravel 原始碼分析: https://ithelp.ithome.com.tw/users/20102562/ironman/1684
另外最近看一篇文章對於Laravel的核心也講得很清楚:https://www.itread01.com/content/1549735233.html