PHP 5.3 正式將 closure 帶入 PHP,到了 Laravel 5,我們看到了 Laravel 大量使用 closure,除了在配合 Laravel 的地方使用 closure 外,我們該如何將 closure 加以內化,進而活用在自己的程式碼中呢? 我們將實際探索 Laravel 原始碼,學習 Taylor Otwell 如何使用 closure。
點燈坊
由於 HTML/CSS 技術越來越複雜,如 Dreamweaver 那種所見即所得的工具已經很難全面支援 HTML/CSS,所以前端開發取而代之的是文字編輯器配合 Emmet,然後直接在瀏覽器預覽,此時如 Browsersync 就非常方便。Laravel Elixir 3.3 之後直接支援 Browsersync,讓我們只要直接存檔就可以立即在瀏覽器看結果。
使用 SQLite In-Memory 的方式雖然又快又方便,但若使用了 DB::raw
或 whereRaw()
的寫法,由於直接使用了 MySQL 的函式,可能 SQLite 並不支援,就必須直接在 MySQL 跑測試。
雖然我們會另外開一個資料庫做測試,但也有可能我們想直接對正式有資料的資料庫做測試,我們該怎麼快速無痛切換呢?
依賴反轉原則是 SOLID 中最難理解的原則,而依賴注入則是單元測試的基石,本文將從可測試性角度探討依賴反轉與依賴注入,並將 Laravel 的 service container、constructor injection 與 method injection 應用在實務上。
實務上我們可能會遇到資料庫邏輯與商業邏輯完全相同,只有顯示邏輯不同,也就是 controller、service、repository 完全相同,只有 route 與 view 不相同,我們該如何在使用同一個 controller 的前提下,實現此需求呢?
有很多方式可以建立 Laravel 開發環境,如 MAMP、Homestead,但事實上我最近最常使用的是 PHP 內建 HTTP server 與 SQLite,這是最簡單,也是最省電的開發環境。
有些公司會要求空白的一行也不能有 whitespace,如 Gerrit 在空白行若有 whitespace,會出現紅色警告,但 PhpStorm 預設換行會有 whitespace,是否能自動幫我們在存檔時刪除 whitespace呢?