PHP 常被戲稱為「又快又髒」的語言,但透過良好的工程規範,完全能寫出清晰、可維護、高效能的代碼。本文整理 10 個核心習慣,涵蓋架構、風格、安全、效能等面向,助你提升代碼品質。
採用 MVC 或分層架構,將業務邏輯、資料存取、表現層分離。使用 Composer 管理依賴,遵循 PSR-4 自動載入。優先考慮成熟框架,避免重複造輪子。
遵循 PSR-12 標準:縮進 4 空格、類名 StudlyCaps、方法 camelCase、常數 UPPER_SNAKE_CASE。使用 PHP_CodeSniffer + PHP-CS-Fixer 自動檢查修復,納入 CI 流程強制執行。
不依賴 short_open_tag、magic_quotes 等已棄用特性。使用環境變數($_ENV、getenv())管理配置,避免硬編碼路徑。容器化部署時更能體現優勢。
htmlspecialchars($str, ENT_QUOTES, 'UTF-8'),JS 語境用 json_encode。password_hash() + password_verify(),內建 Bcrypt/Argon2。類別、公共方法務必編寫 PHPDoc 註釋(@param、@return、@throws)。複雜業務邏輯加上行內註釋說明「為什麼」而非「做什麼」。使用 phpDocumentor 生成 API 文檔。
始終使用 <?php ... ?>,避免 <? ... ?> 或 <%= ... %>。短標籤需開啟 short_open_tag,移植性差且與 XML 聲明衝突。
字串不包含變量插值時,單引號效能略高(無需解析變量)。統一風格可減少認知負擔。需插值或換行時再用雙引號或 Heredoc/Nowdoc。
// 推薦:明確指定編碼與雙引號轉義 echo htmlspecialchars($userInput, ENT_QUOTES | ENT_HTML5, 'UTF-8');
ENT_QUOTES 同時轉義單雙引號,ENT_HTML5 確保 HTML5 相容。
// 推薦:逗號分隔,直接輸出,避免建立臨時字串 echo 'User: ', $name, ', ID: ', $id, PHP_EOL; // 不推薦:連接產生新字串 echo 'User: ' . $name . ', ID: ' . $id . PHP_EOL;
多參數 echo 無返回值,但能減少記憶體分配,高頻輸出場景差異明顯。
// 檢查 GET 參數是否存在且非空
$keyword = $_GET['q'] ?? '';
if ($keyword === '') {
http_response_code(400);
exit('缺少查詢關鍵字');
}
// 進一步驗證長度、格式、白名單等
善用 filter_input()、filter_var() 內建過濾器,或引入驗證庫(如 respect/validation)。
優雅代碼非一日之功,需團隊共識、工具鏈支撐、持續重構。從這 10 點著手,配合靜態分析、代碼審查、自動化測試,漸進式提升專案健康度。