PHP 是弱型別語言,變數型態不顯式宣告,團隊協作時統一命名慣例能大幅提升程式碼可讀性與維護性。本文分享實務驗證的「型態前綴」命名風格(類似匈牙利命名法簡化版),並說明陣列維度、物件、資源等進階規範。
| 型態 | 前綴 | 範例 | 說明 |
|---|---|---|---|
| string | str | $strMessage = 'Hello'; | 字串 |
| integer | n / int | $nCount = 100; | 整數,n 為 number 縮寫 |
| float/double | f / flt | $fPrice = 99.9; | 浮點數 |
| boolean | b / bln | $bIsActive = true; | 布林值,建議用 is/has/can 開頭更語意化 |
| array | a / arr | $aUsers = []; | 陣列,見下方維度規範 |
| object | obj / o | $objUser = new User(); | 物件實例 |
| resource | res / r | $resFile = fopen(...); | 資源控制代碼 |
| null | - | $data = null; | 無特定前綴 |
| mixed | m / mx | $mResult = $func(); | 多型回傳值 |
// 一維陣列:單數名詞
$aUser = ['id' => 1, 'name' => 'John'];
// 多維/集合陣列:複數名詞
$aUsers = [
['id' => 1, 'name' => 'John'],
['id' => 2, 'name' => 'Jane']
];
// 關聯陣列(字典):單數 + Map/Dict 後綴或直接語意化
$aUserMap = [1 => 'John', 2 => 'Jane'];
$aConfig = ['db_host' => 'localhost', 'db_port' => 3306];
| 類型 | 前綴 | 範例 | 備註 |
|---|---|---|---|
| Entity/Model | entity / ent | $entOrder = $repo->find(1); | 領域實體 |
| DTO/VO | dto / vo | $dtoRequest = new LoginRequest(); | 資料傳輸物件 |
| Repository | repo | $repoUser = new UserRepository(); | 資料存取層 |
| Service | svc | $svcPayment = new PaymentService(); | 業務邏輯層 |
| Controller | ctrl | $ctrlAuth = new AuthController(); | 控制器 |
| PDOStatement | stmt | $stmt = $pdo->prepare(...); | 預處理語句 |
| cURL handle | ch | $ch = curl_init(); | 慣用寫法 |
// 推薦:以 is/has/can/should 開頭,可省略 b 前綴
$isLoggedIn = true;
$hasPermission = false;
$canEdit = true;
$shouldRetry = false;
CLASS_CONSTANT(全大寫底線分隔)APP_DEBUG, DB_DEFAULT_CHARSET$gConfig、$GLOBALS['app'] 加 g 前綴警示。NAMING_CONVENTION.md 納入專案文件。「型態前綴 + 語意化名稱」能在不依賴 IDE 型別提示的情況下,讓開發者一眼掌握變數用途。關鍵在於團隊共識與工具化檢查,而非教條主義。