1. 程式人生 > >怎樣才算學會了 Laravel?

怎樣才算學會了 Laravel?

轉載:http://www.dahouduan.com/2017/09/06/do-you-know-laravel/

Laravel 框架是一個功能豐富、架構完善的框架,然而對於一個野路子 PHP 程式設計師來說要想上手不是那麼簡單的事,為什麼呢?

Laravel 的核心概念你掌握了嗎?
Laravel 中可能有許多你之前聞所未聞的概念,比如服務容器(Service Container) 、服務提供者(Service Provider)、門面(Facade) 、契約(Contracts),如果你之前沒有太多的軟體架構經驗,看了這些概念之後幾乎肯定是一臉茫(meng)然(bi),然而這些東西才是 Laravel 精華的部分,如果你只是看看 Laravel 的路由怎麼設定、請求資料怎麼取、在哪放 Controller 、在哪放 Model就認為自己學會了 Laravel 的話,那我建議你不要用 Laravel ,因為你會發現你幾乎不會從Laravel得到什麼好處,你因此會嫌棄Laravel,我見過太多用人看了Laravel後說:

“Laravel好難用,我還是用我的CI 吧”。

框架與框架是不一樣的,有些框架就是簡單又傻瓜,讓你隨意的發揮,有些框架設計很精巧,你需要掌握它的設計理念和使用技巧才發揮他真正的威力。

Laravel 文件的坑
首先 Laravel 提供的文件說實話很一般,即便社群裡已經把文件翻譯成了中文,然而這或許並不是什麼好事,你本身對一些Laravel作者本意的概念就不清楚,現在再上加一層語言之間的轉換,這個過程或多或少會有含義的偏差和丟失,這幾乎是不可避免的, 所以看文件還是儘量看原版的好。

其次中文文件中並未對某些基礎概念做出明確的解釋或者附註,這樣對於未接觸過這些概念的開發者來說理解這些概念就變的十分困難, 下面摘自 Laravel-china 提供的Laravel 中文文件中,關於“契約(Contract)”的解釋:

Laravel 的 Contracts 是一組定義了框架核心服務的介面。例如,Illuminate\Contracts\Queue\Queue contract 定義
了佇列任務所需要的方法,而 Illuminate\Contracts\Mail\Mailer contract 定義了寄送 e-mail 需要的方法。

框架對於每個 contract 都有提供對應的實現,例如,Laravel 提供各種驅動程式的佇列實現,以及由 SwiftMailer 提供
的 mailer 實現。

第一句就提到了一個名詞核心服務,請問什麼核心服務?核心服務有哪些,這些東西幾乎整個文件都沒有給出過明確的解釋,你只能在文件中靠別的內容來推測,這樣就給文件閱讀帶來了很大困難,很多新手兜兜轉轉多少天好像也會用用 模型控制器寫寫功能了,其實對於Laravel的學習來說門都還沒入呢。

學會Laravel 需要掌握哪些核心概念
我自己Laravel用的還不多,但是還是可以大概列下:

首先要掌握對 Composer的自動載入機制
系統架構(Architecture Concepts)裡的概念是都要掌握的,有服務容器、伺服器提供者、門面,契約, 
這些概念不掌握還是去用 CI 好了。

composer 中有4種自動載入機制,沒安裝過的先 安裝 composer 試試。

服務容器幾乎就是Laravel框架設計的精華所在,其餘服務提供者、門面、契約都是一些軟體設計思想在 Laravel 中的應用,至於路由,檢視,控制器 等都是枝葉,直接翻文件或者程式碼註釋看就可以了,Laravel 程式碼註釋很詳盡。

掌握了核心概念的好處是你基本上知道如何用Laravel 架構你的業務,以實現結構優雅,易於維護測試的程式,這時候才能體現出Laravel真正的價值,而不是關注於 Laravel路由的花哨,或者檢視比別的框架怎麼樣,那些都不是重點。