php – phpUnit 快速教學

透過 composer 安裝

透過 Composer 的 Autoload 指定 psr-4 的自動讀取規範。如修改 composer.json,我指定命名空間 MyLib 對應的根目錄是 src。

開始建立我們的第一支類別 src/SayHi.php

我們建立一支單元測試檔 test/CaryTest.php。用來測試 SayHi::main() 回傳的時候,是否等於我們預期的值 “Hi”。我們透過 phpUnit 提供的斷言方法 assertEquals()。

有更多的斷言方法,可以參考官網。接著 Command-Line 運行測試

如果有多筆 test 的話,可以運行到資料夾,會一次跑所有的測試

接著我們能看到執行的結果

大致上懂到這裡就好。

我們可以看到輸出有個「.」的符號,那是有意思的。官方說

  • . 代表測試成功
  • F 測試運行的時候發生斷言失敗
  • E 測試運行的時候發生錯誤
  • R 測試運行的時候被標記有風險
  • S 印出的時候測試被跳過
  • I 印出的時候, 測試被標記未完成或尚未實現

執行測試的時候,也可以使用這種格式化

php – 找出自行定義的 Function 或 Class 在哪個文件位置

維護專案的時候,尤其是非框架的寫法,常常看到前人的程式會不知道 Class / Function 到底定義在哪個文件,雖然用 IDE 可以很容易找出來,但如果不靠 IDE 追蹤的話,有什麼方法能得知定義在哪呢?其實可以透過 ReflectionFunction 與 ReflectionClass 。

ReflectionFunction

可以讀取指定方法的相關資訊

ReflectionClass

能讀取指定類別的相關資訊

Laravel – 關於 Carbon 日期處理的二月問題

目前使用指定屬性或 set 方法的方式,在 Carbon v2.24 會出現指定 2 月但顯示 3 月的錯誤。

後來在較新的官方文件看到,還是建議使用預設的用法

Laravel – MySQL – 繞過資料庫外鍵的條件約束,強制刪除

MySQL 下指令 SET FOREIGN_KEY_CHECKS=0,可以將被關聯的來源強制刪除,有時候我們僅是要做測試的時候,會非常好用,不會被卡死。

在 Laravel 可以透過這樣的方式,來刪除紀錄或清空資料表

php – Laravel 支援跨網域的方式

通常我們在 php 檔案最前方加入

但在 Laravel 當然也可以直接寫在 web.php / api.php 最前方,但我通常會建立一份 middleware 結構處理。