PHP ENUM 偽實現
Enumerations 又可簡稱為 Enum ,在眾多語言中都可以讓程式碼更高效簡潔,例如我們可以在 python 中這麼宣告,並且用 requests 模組打一個 request,即可透過 Enum 來模組化 Response import enum import request class HTTPResponsecode(enum.Enum) OK = 200 BAD_REQUEST = 400 NOT_FOUND = 404 r = requests.get('https://omegaatt.com/') print(r.status_code == HTTPResponsecode.OK) # True 但是在 PHP 中原生是沒有內建 Enum 的,必須安裝 perl 的 SplEnum 類套件庫,方能直接使用 Enum 的功能。或是可以透過以下的方式達到接近的效果。 極簡易版 Enum 首先,建立一個 Enum 類,一樣舉例為 HTTP 的 response code abstract class HTTPResponsecodeEnum { const OK = 200; const BAD_REQUEST = 400; const NOT_FOUND = 404; } 這樣就完成最基本的 Enum 拉,只要透過簡單的 if 判斷便能輕鬆享受打包的方便 if($status_code == HTTPResponsecodeEnum::OK){ // foo(); } 具有驗證功能的 Enum 根據防禦性程式寫法,我們知道千萬不要相信使用者傳過來的東西,必須去驗證資料是否正確時,極簡版本已經無法勝任。這時候可以使用 ReflectionClass 這個這個類別協助,由這個類來取得 Class 中的常數。 ...