在 PHP 發展早期,版本之間的超全域變數機制差異極大。global.php 正是為了解決 PHP 4.1.0 之前版本缺乏 $_GET、$_POST、$_SESSION 等超全域陣列而設計的相容性樞紐。這段程式碼展示了早期 PHP 開發者如何透過版本判斷與魔術引號處理,統一不同環境下的變數存取方式。
檔案定義了兩個關鍵遞迴函數 pmyoutput() 與 pmyinput(),分別處理資料的「輸出清理」與「輸入轉義」:
",確保資料安全輸出到瀏覽器。兩者皆運用 array_walk() 遞迴處理多維陣列,體現了早期 PHP 陣列操作的典型模式。
被註解的主邏輯展示了兩套平行機制:
$HTTP_*_VARS)$HTTP_SESSION_VARS、$HTTP_SERVER_VARS 等舊式陣列以引用方式映射至 $GLOBALS['_SESSION']、$GLOBALS['_SERVER'] 等新式鍵名。get_magic_quotes_gpc() 狀態決定是否對 GET/POST/COOKIE 執行 pmyinput() 轉義。$GLOBALS['_REQUEST']。$_GET、$_POST、$_COOKIE、$_REQUEST 執行 pmyinput() 統一補齊轉義。雖然現代 PHP(5.4+ 已移除魔術引號,超全域變數早已標準化)不再需要此類相容層,但 global.php 仍具備教學價值:
phpversion() 比對實現平滑遷移。這段程式碼是 PHP 從「野蠻生長」走向「規範標準」過程中的縮影,值得每位 PHP 開發者回顧與學習。