PHP 的前世今生

PHP 現在正在經歷著一場自己在編程語言中的文藝復興。通過增加一系列新的特性(比如 namespaces,traits,closures,build-in opcode cache 等),PHP 逐漸演變成一個現代化的腳本語言。同時,PHP的整個生態系統也在因此而轉變。PHP 程序員們不再過度依賴那些龐大而臃腫的框架,而是更多的去使用更加輕量級的專用組件。Composer 依賴管理工具也徹底改變了人們構建 PHP 應用的方式;它將我們從那些框架的圍墻中解脫出來,讓我們可以自由混搭各種可相互操作的組件,從而搭建出最能符合我們需求的 PHP 應用。當然,如果沒有 PHP Framework Interop Group 負責提出與優化的各種標準,那么這些組件之間的互操作性也是幾乎不可能實現的。

《現代PHP之路》可以當作是一份對 PHP 新特性的教程,它將向你介紹各種實用的社區標準,最佳實踐;并教會你如何利用這些知識和可互操作的組件來構建和部署不可思議的 PHP 應用。

PHP 的過去

在開始學習現代 PHP 之前,我們應該先了解一下 PHP 的起源。PHP 是一種服務器端的解釋型腳本語言。也就是說你寫好了 PHP 代碼,要將它上傳到服務器上,然后通過 PHP 解釋器來執行你的代碼。PHP 通常被用于像 Apache 或者 Nginx 這樣的 Web 服務器來提供動態的內容。當然,PHP 也可以被用來創建強大的命令行程序(就像 bash,Ruby,Python等等)。許多 PHP 程序員由于不了解這一點而錯過了好多讓人激動的功能。當然,這些程序員不包括你在內。:)

你可以通過官方網頁來了解 PHP 的歷史。在這里我不打算再重復已經被 Rasmus Lerdorf(PHP 之父)說過的話。我想說的是 PHP 有一個混亂的過去。PHP 最初是由 Rasmus Lerdorf 寫的一套簡單的 CGI 腳本,用來跟蹤訪問他主頁的人們的信息。Lerdorf 給他的這套腳本命名為 “個人主頁工具集”(Personal Home Page Tools)。這套代碼跟我們現在所說的 PHP 完全不同,甚至根本不能算是一種腳本語言,而只是一個簡單的工具,可以提供一些簡單的變量,自動解釋表單變量,并可以嵌入 HTML。

在1994年到1998年之間,PHP 經歷了數不清的改進,甚至還有好幾次完全推倒重寫。Andi Gutmans 和 Zeev Suraski,兩位當時還是 Tel Aviv 公司的程序員,也加入了 Rasmus Lerdorf 的隊伍,逐漸將 PHP 從一套簡單的 CGI 工具轉變成一個完整的編程語言,讓 PHP 有了比較統一的語法和簡單的面向對象支持。他們將最終的產品命名為 PHP3, 并在1998年下半年正式發布。這個新的命名跟之前的名字沒有什么聯系,而是 “PHP:Hypertext Preprocessor” 的遞歸縮寫形式。PHP3 是第一個長的有點像我們現在所說的 PHP 的版本。它對各種數據庫,協議和API有著卓越的可擴展性。PHP3 的這種可擴展性吸引了更多的開發者加入到這個項目中來。到1998年底,PHP 已經在全世界的 Web 服務器中占有了 10% 的份額。

PHP 的現在

現在,PHP 語言正在來自世界范圍的許多開發團隊的支持下快速發展。整個開發的流程也有了一些變化。在過去,一般的開發過程就是先寫好 PHP 代碼,將文件上傳到服務器,然后開始祈禱一切都能正常運行。這是一個很不好的開發流程,但是,在沒有可用的本地開發環境的情況下,也只能不得已而為之。

現在的開發流程使用版本控制工具取代了過去那種FTP的方式。使用 Git 這樣的版本控制工具可以維護一個具有歷史記錄的代碼庫,你也可以很容易的創建新的代碼分支或者合并不同的代碼分支。使用 Vagrant 這樣的虛擬化工具和 Ansible,Chef 或者 Puppet 這樣的自動配置工具可以虛擬出跟生產環境一致的本地開發環境。通過 Composer 依賴管理工具我們可以利用專用的 PHP 組件。我們的 PHP 代碼遵循 PSRs - 由 PHP Framework Interop Group 管理的社區標準。我們可以利用 PHPUnit 這樣的工具徹底的測試我們的代碼。我們將代碼部署在運行于像 nginx 這樣的 Web 服務器之后的 PHP FastCGI 進程管理器中。我們也可以通過 opcode 緩存來提升應用的執行效率。

同時值得一提的是,直到2014年,PHP 終于有了一份官方的語言規范草案。

Sara Golemon 和 Facebook 在 O‘Reilly 的 2014 OSCON 會議上宣布了第一份 PHP 規范草案。你可以在 PHP internals mailing list 中查看這份官方聲明,也可以在 Github 上查看 PHP 語言規范

由于有多個 PHP 引擎的競爭,使得官方的 PHP 語言規范文件就顯得非常重要。最初的 PHP 引擎是 Zend Engine,它是用 C 語言寫的一個 PHP 解釋器,并從 PHP4 開始使用。Zend Engine 是由 Rasmus Lerdorf,Andi Gutmans 和 Zeev Suraski 創建的,它也是 Zend 公司對 PHP 社區的主要貢獻。不過,現在有了第二個主要的 PHP 引擎 - 由 Facebook 開發的 HipHop Virtual Machine。所以官方的 PHP 語言規范保證了這兩個引擎之間基本的兼容性。

PHP 的未來

Zend 引擎正在添加新特性和改進執行效率等方面快速發展,這可能是因為他們感受到了來自于 Facebook 的 HipHop Virtual Machine 引擎和 Hack 編程語言的競爭壓力。

Hack 是一個基于 PHP 的新的編程語言。它在保持了對 PHP 動態類型的向后兼容的同時,引入了靜態類型,新的數據結構和更多的接口。Hack 的目標群體是那些即喜歡 PHP 語言快速的開發效率,又希望用靜態類型帶來對程序的可預測性和穩定性的程序員們。

HipHop Virtual Machine(HHVM)是一個 PHP 和 Hack 的解釋器,它使用實時的 (just in time)JIT 編譯機制來提升應用的執行效率,并減少對內存的占用。

雖然并不能說 Hack 和 HHVM 即將取代 Zend 引擎,但是 Facebook 的參與在 PHP 社區引起了巨大的影響。更加激烈的競爭使得 Zend Engine 核心團隊不得不宣布 PHP7,一個優化的 Zend Engine,據說將可以與 HHVM 相媲美。

對于 PHP 開發者來說,這是一個讓人激動的時代。PHP 社區從來沒有像現在這樣有活力,充滿樂趣和有創造性。希望這個系列可以幫助大家更好的去認識現代 PHP。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,619評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,155評論 3 425
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,635評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,539評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,255評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,646評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,655評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,838評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,399評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,146評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,338評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,893評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,565評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,983評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,257評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,059評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,296評論 2 376

推薦閱讀更多精彩內容