用Laravel也有三四個月了,雖然是兼職開發,可是使用的頻率很是之高,畢竟是產品化的一個項目。
在這期間,也踩了無數的坑,走了不少彎路,因此準備把最近的感悟記錄下來,方便後來者。php
這是最開始接觸Laravel的一個階段。若是有PHP經驗,那麼應該能很快找到MVC的路徑,而後得心應手的開始寫起來。雖然還顯得有些笨拙,不過很快就能作出一些內容了。若是沒有PHP經驗,仍是不建議輕易入坑的。畢竟連語法都不熟悉,很難上手。node
Laravel因爲支持大量的命令行生成代碼,可能對於thinkPHP或者其餘框架的用戶並不太友好,不過當你須要建立大量文件的時候,仍是會以爲很好用的。即便是簡單的增刪改查,也建議多用命令行,好比最好用的php artisan make:model Foo -m,直接建立了model和對應的migration。python
開發了比較多的功能以後,會發現須要大量的測試數據,這時候factory和seeder就該大顯身手了。固然這兩個貨並不怎麼好搞定,faker的功能很是之多,factory中建立各類faker,而後在seeder中調用,學會這些,你就又升了一級。laravel
faker對中文支持也很好,能夠生成用戶名,英文名,中文名,中文公司名,中文的企業口號,大陸電話號碼等。
數據填充的文檔
faker的文檔git
最開始表單校驗都是直接寫在controller中,若是瞭解一下request相關的內容,能夠將表單驗證和數據建立更新,都放在單獨的request類中,php artisan make:request FooForm便可建立一個表單驗證器。個人習慣是,把新建和更新的驗證,都寫在一塊兒,這樣方便對照,以避免出錯。github
表單類支持自動驗證登陸,自動驗證規則,支持不少種規則還支持自定義規則(php artisan make:rules balabala),還能夠用messages函數,返回自定義錯誤信息。
表單相關的文檔數據庫
Laravel從5.5纔開始支持瀏覽器自動化測試dusk,不過功能直接就登峯造極了,各類assert讓你眼花繚亂,並且易用性也在我用過的各類瀏覽器測試框架中數一數二。若是沒有接觸過自動化測試或者瀏覽器測試,建議先嚐試一下其餘框架,python、nodejs也都是有這方面工具的,作http測試和瀏覽器什麼的。傳統的人工測試,實在有點落後了。設計模式
dusk最好用的,一個是支持分頁,也就是把一部份內容抽象到單獨的類裏面;還有一個是有好多內置函數,不須要寫一大堆選擇器,好比type輸入可使用input的名字,press使用button的名字,clickLink使用連接的名字,還能自定義高級選擇器;另外一個是遇到錯誤能夠自動截圖,簡直是神操做,能夠直觀看到出錯的頁面。
測試相關的文檔瀏覽器
我目前剛達到這一階段,今天才剛剛理解依賴注入的用法,纔開始用上repository模式,以前數次重構,都沒有成功。Laravel真正的神奇之處就在這裏,你能夠在controller以外的地方注入request對象,從而把大量的邏輯都從controller和model中剝離出來。在這以前的一陣子,我一直在用presenter模式,把視圖中涉及到一些邏輯的代碼都提取出來,以便複用。架構
項目愈來愈大以後,MVC已經徹底不夠用了,controller亂成一團,model裏也有好多邏輯代碼,view裏有不少判斷和計算。這時候就須要好好設計一下骨架了,好比presenter、repository等,service模式還沒用過,後續可能會使用吧。
Laravel中大型項目架構