這 35 條建議凝聚了從「會寫增刪改查」到「設計高併發系統」的關鍵認知躍遷。每條都是實戰踩坑後的血淚總結,建議收藏並定期複盤,將隱性知識轉化為顯性技能。
array_*、str_*、json_*、date_*、mb_* 系列,不查手冊能寫出正確參數順序。error_reporting(E_ALL)、ini_set('display_errors', 1)(開發)log_errors=On、error_log=/var/log/php/error.log(生產)E_NOTICE 但必須修復 觸發點,而非單純隱藏。HttpOnly、Secure、SameSite。password_hash($pwd, PASSWORD_BCRYPT) / PASSWORD_ARGON2ID,拒絕 MD5/SHA1/自研加密。urlencode() / rawurlencode(),JS 端 encodeURIComponent(),AJAX 同理。header('Content-Type: application/json; charset=utf-8'),中文不轉義 JSON_UNESCAPED_UNICODE,結構 {code, msg, data}。require 失敗致命、include 警告繼續;生產環境全面併入 Composer PSR-4 自動加載,拒絕手動引入。.env / config/*.php 放在 Web 根目錄外層,Nginx/Apache 禁止訪問隱藏文件。uploads/{Y}/{m}/{d}/{random}.{ext},單目錄文件數 < 1000,避免 inode 耗盡、ls 卡死。<form method="post" enctype="multipart/form-data">,否則 $_FILES 為空。set/get/del/incr/expire 原子操作。ob_start() 捕獲輸出 → file_put_contents() 寫文件 → Nginx 直接服務,QPS 提升 10-100 倍。htmlspecialchars)、SQLi(預處理)、命令注入(escapeshellarg)、路徑遍歷(basename + 白名單)、XXE(禁用外部實體)、SSRF(內網 IP 白名單)。for($i=0;$i<count($arr);$i++) 每次調用 count()for($i=0,$len=count($arr);$i<$len;$i++) 或 foreachutf8mb4、連接 SET NAMES utf8mb4、HTML <meta charset="utf-8">、PHP mb_internal_encoding('UTF-8')、文件保存無 BOM UTF-8。mb_substr() / mb_strimwidth(),禁用 substr() 導致亂碼。SessionHandlerInterface,read/write/destroy/gc 對應 CRUD,設置 session_set_save_handler()。php.ini: upload_max_filesize/post_max_size、Nginx client_max_body_size、前端 JS 預檢、業務邏輯二次校驗。ip2long() → INT UNSIGNED(IPv4),INET6_ATON() → VARBINARY(16)(IPv6),範圍查詢極快。$var = 'name'; $$var = 'value'; 理解可變變量,但嚴禁業務代碼使用,極難維護/靜態分析。session.upload_progress) / AJAX 輪詢 / WebSocket 推送 / Nginx Upload Module。pathinfo()、SplFileInfo、strrchr()、substr(strrpos())、MimeType 判斷、finfo_file() 魔數檢測(最安全)。array_multisort()、usort() + 空間船操作符 <=>、array_column() 提取鍵再排序。filter_var($email, FILTER_VALIDATE_EMAIL)、filter_var($url, FILTER_VALIDATE_URL)。curl + 正則/DOMXPath/QueryList → 反爬應對(UA 池、代理 IP、Cookie 池、頻率控制、JS 渲染 Headless Chrome)。將上述 35 條轉化為 個人技能雷達圖,每季度攻克 1-2 個盲區,產出:
① 技術博客(原理+代碼+踩坑)
② 開源組件/工具庫
③ 團隊內部分享 PPT
寫代碼不等於懂技術,能講清楚原理並落地解決問題才是硬實力。