2014 年 Facebook 發布 Hack 語言,旨在解決 PHP 在大規模工程中的型別安全與性能瓶頸。Hack 運行於 HHVM(HipHop Virtual Machine),保留 PHP 語法熟悉度,引入靜態型別、泛型、異步等現代特性。本文剖析 Hack 產生背景、核心特性、與 PHP/Zend 引擎關係及未來展望。
Facebook 早期代碼庫全為 PHP,招聘門檻低、開發效率高。但隨業務爆發,PHP 的動態弱型別導致大量型別錯誤僅在運行時暴露,迫使團隊編寫海量單元測試補償。Hack 引入嚴格型別系統,將型別檢查前置至編譯/開發階段,大幅減少運行時錯誤與測試成本。
// 嚴格模式檔案頂部聲明支援標量/陣列/物件型別、可空型別(
?Type)、泛型、聯合/交集型別,編輯器/IDE 可即時提示錯誤。2. 即時型別檢查服務
HHVM 內建
hh_server,背景監控代碼變更,毫秒級回報型別錯誤至 IDE(VS Code、Nuclide、PHPStorm),實現「寫代碼即檢查」,無需等待瀏覽器刷新。3. 與 PHP 共存與漸進遷移
eval() 等不支援)。.hh,可與 .php 混合項目,逐步遷移核心模組。不會。 PHP (Zend Engine) 由 PHP Foundation 治理,RFC 投票公開透明,生態龐大(WordPress、Laravel、Symfony 等)。Hack 由 Facebook 主導,針對內部需求定制,不會併入 PHP 標準。兩者將長期並存,競爭反而推動雙方性能與特性演進(如 PHP 7/8 的 JIT、型別系統增強即受 HHVM 影響)。
對於大型長運行應用、微服務、高併發場景,Hack + HHVM 提供極具吸引力的性能與工程保障。中小專案、CMS、傳統 LAMP 棧則繼續受益於 PHP 生態成熟度。開發者可根據團隊規模、性能要求、技術債務靈活選擇。