PHP8 之 mini-laravel

lidongyoo發表於2021-01-04

介紹

mini-laravel 是基於 PHP8 編寫的一個用於學習 Laravel 的專案(僅用於學習用途)

主要實現了 服務容器、中介軟體、路由、一些核心啟動類如:載入配置檔案……;比較有特色的一點是利用 PHP8 新增的註解特性實現了路由的定義

像一些服務提供者如:AuthServiceProvider、DatabaseServiceProvider…… 都沒有寫,沒有寫的原因就是每個分析下來的時間太長了,而且個人認為將 Laravel 的核心機制弄明白之後再去看這些會容易很多(媽媽再也不用擔心我不知道這個騷方法是怎麼來的啦)

由來

  • 我入門 Laravel 也是看的社群的教程(在這裡感謝一下社群的教程 收穫很多),但是在教程中總是看見使用一些找不到源頭的騷操作,還有控制器裡方法的引數注入(我明明沒有 new 為什麼可以用??)相信很多同學入門的時候有這個疑惑

  • 入門之後在專案中開始使用 Laravel ,雖然寫業務沒有什麼問題但有些時候架不得好奇會想去窺探原始碼發現根本不知道如何下手。。。
    在這個時候發現社群有刨析原始碼的文件 《深入 Laravel 核心》,看了這個文件之後對 Laravel 的核心機制有了粗略的瞭解之後看原始碼的時候還是感覺有點困難;
    繼續找社群的文件發現了《Laravel 之道》,這位老哥是真滴牛批硬是給 Laravel 的每一行程式碼都給你講了(:+1:100分)。貼一個截圖
    PHP8 之 mini-laravel
    這是看了老哥的 Composer 載入原理之後,我非常激動的給老哥發了個私信哈哈哈

  • 雖然看了上面兩個文件之後對 Laravel 的原理算是瞭解了但是總是會忘記一些枝頭末尾的關聯片段,再加上當時 PHP8 剛剛釋出,我就想為什麼不寫下來呢順便熟悉一下 PHP8 新特性

過程

在寫路由部分時我被 Laravel 的路由原始碼給繞暈了:dizzy_face:,然後看了 老司機帶你實現 Laravel 路由註冊功能 這篇文章之後,對路由的實現有了比較清晰的認識 感謝老司機哈哈哈 @Dennis_Ritchie,再回來看原始碼的時候就輕鬆很多了

因為用的 PHP8 難免要 Google,意外發現了這個 laravel-route-attributes 倉庫,就有了上面的註解路由實現當然大部分參考自這個倉庫

好像整個寫下來最難的部分應該就是路由了~

可能的幫助

如果你在看 Laravel 的原始碼有不明白的地方,可以看看 mini-laravel 的對照實現會簡單很多,Laravel 的原始碼總是穿梭於各個包之間:grin:

然後我總結了我在 mini-laravel 中使用到的 PHP8 的新特性與一些不太常用到的類

總結

在這個過程中我覺得耐心很重要~ 想一個場景:你點開一個方法結果裡面是這樣的
PHP8 之 mini-laravel
是不是很絕望!!!但是這是極少數案例~
最後祝各位 新年快樂、永不加班~

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章