PHP 的大小寫敏感規則並不統一,歷史遺留導致不同標識符表現不同。本文系統整理變量、常量、函數/方法/類、魔術常量、特殊值、類型轉換、配置指令的大小寫規則,助您編寫一致、可預測的代碼。
| 類別 | 示例 | 說明 |
|---|---|---|
| 變量名 | $abc vs $aBc vs $ABC | 三個不同變量,所有變量均區分,含超全局 ($_GET, $_SESSION...) |
| 常量名 | define('ABC', 1); ABC vs abc | 預設區分,慣例全大寫。無配置項可改變此行為。 |
| php.ini 指令 | file_uploads vs File_uploads | 配置指令區分大小寫,必須小寫。 |
| 類別 | 示例 | 建議 |
|---|---|---|
| 函數名 | show() vs SHOW() vs Show() | 與定義時保持一致 (推薦小寫/駝峰) |
| 類名 | class User vs class USER | 推薦 PascalCase (User) |
| 方法名 | User::getName() vs User::GETNAME() | 推薦 camelCase (getName) |
| 魔術常量 | __LINE__ vs __line__ | 推薦全大寫 |
| 特殊值 | null/NULL, true/TRUE, false/FALSE | 推薦小寫 (PSR-12) |
| 類型強制轉換 | (int) vs (INT), (string) vs (STRING) | 推薦小寫 |
<?php
// 1. 變量區分
$abc = 'test';
echo $abc; // test
echo $aBc; // Notice: Undefined variable
// 2. 常量區分
define('MY_CONST', 100);
echo MY_CONST; // 100
echo my_const; // Notice: Use of undefined constant (PHP 8+ Error)
// 3. 函數/類/方法不區分
function myFunc() { echo 'ok'; }
myFunc(); // ok
MYFUNC(); // ok
class MyClass { static function myMethod() { echo 'method'; } }
MyClass::MyMethod(); // method
// 4. 魔術常量不區分
echo __line__; // 當前行號
echo __LINE__; // 當前行號
// 5. 特殊值不區分
$a = null; $b = NULL; var_dump($a === $b); // true
$c = true; $d = TRUE; var_dump($c === $d); // true
// 6. 類型轉換不區分
$num = 123;
$str1 = (STRING)$num;
$str2 = (string)$num;
var_dump($str1 === $str2); // true
?>
camelCase (如 $userName, getUserInfo())。PascalCase (如 UserService)。SNAKE_CASE 全大寫 (如 MAX_RETRY_COUNT)。雖然 PHP 允許部分標識符不區分大小寫,但始終按區分大小寫編寫,能消除認知負擔、減少隱性 Bug、提升團隊協作效率。