Collection
並非 PHP 原生的型別,是 Laravel 所擴充,因此 PHPUnit 並無法直接對其做 assertion,本文介紹兩種方式,一種是使用 PHPUnit 的 assertArraySubset()
,一種是自己寫 collection macro,各有其優缺點,可視需求決定要使用哪種方法。
點燈坊
為了可測試性與低耦合,我們會使用依賴注入
取代 new
建立物件,對於 legacy code,當然可以使用手動的方式重構,透過 PhpStorm,我們可以使用更簡單的方式將 new
重構成 依賴注入
。
若要將專案發佈到 GitHub,實務上除了先在本機建立 local git repository 外,還要在 GitHub 建立 remote git repository,然後建立 remote branch,最後才能 push 到 GitHub,這些動作都可以在 PhpStorm 內簡單的完成。
Laravel 的 Collection
在實務上非常好用,除了 Eloquent 直接回傳 Collection
外,還擴充了很多 method,讓我們可以使用 higher order function 與 fluent 風格開發,讓程式可讀性更高。不過 Collection
的除錯就比較麻煩,本文使用 PhpStorm 內建的 Watches,讓我們可以在不用修改程式碼的前提下,快速對 Collection
除錯。
在 TDD 開發流程,為了第一個 綠燈,一開始可能在同一個 namespace 下只有一個 class,但隨著重構的進行,可能重構出更多的 class 與 interface,為了更加的高內聚,低耦合,我們可能會將更相關的 class 與 interface 重構到其他 namespace,導致相依的 class 也必須修改,在重構 namepsace 時,PhpStorm 可以幫我們將相依的 class 一併修改,非常方便。
傳統 PHP 大都使用 echo()
、var_dump()
或 dd()
除錯,此種方式必須破壞原本程式碼,而且所能觀察的變數有限,也無法明確得知程式執行的流程。PhpStorm 支援 Xdebug,允許我們設定中斷點,程式將停在中斷點設定之處,讓我們透過 Step Into、Step Over、Step Out 的方式除錯,非常方便。
PhpStorm 最強的三個功能為 : Refactoring、Debugging、與 Inspection,但由於 PHP 生態是眾多 framework,而每個 framework 的目錄架構也不太一樣,因此必須先在 PhpStorm 設定 directories,才能發揮 PhpStorm 的強悍功能,而不只是文字編輯器而已。
傳統我們會使用 if else
判斷,讀取不同的 property,但由於 JavaScript 與 PHP 動態語言的特性,我們可以將要讀取的 property 名稱以變數表示,直接以該變數讀取 property。