PHP比你想象的好得多
有很多對於PHP的抱怨,甚至這些抱怨也出自很多聰明的人。當Jeff Atwood寫下對於PHP的另一篇抱怨文章之後,我思考了下PHP的好的方面。
這些抱怨最大的問題是他們出自很多仍在使用舊版本PHP的人。他們或許是不願意關心或許是不願意承認PHP不管在語言層面還是在社群層面都在以很快的速度演變。實際上它比任何其他語言或者web平臺都演變的快。儘管並不總是如此,但是過去的五年PHP經歷了一個驚人的歷程。
在說最近PHP社群取得的驚人成就之前,我們先來看看一些有趣的數字:PHP被77.9%的服務端程式語言已知的網站使用。Wordpress被全世界16.6%的網站使用。使用率最高的三個CMS建站系統是:第一的Wordpress份額為54.3%,第二的Joomla份額為9.2%,第三的Drupal份額為6.8%。這三個產品都是用PHP寫的。
PHP一定做了一些正確的事,不是嗎?
現在,我來告訴你吧,PHP的絕技在於:儘管經過了這麼多年的變化,PHP對於非技術人員依然是最容易學習的語言,它讓人可以比其他技術更快地建立動態網站,也讓人沒有麻煩地託管網站。PHP可能不是這個世界上設計最好的語言,但是它能讓你完成事情(get things done),這一點是毋庸置疑的。
PHP語言
PHP5.0(2004年釋出)帶來了很實用的物件模型…等等,我在說8年前釋出的東西。快進到現在的PHP5.4,即PHP最近的版本,帶來了對於現代web語言你夢寐以求的東西:是的,PHP支援了名稱空間(namespaces);是的,PHP支援閉包(closure);是的,PHP支援traits。
儘管需要花費一些時間,但是PHP5.4帶來了一些語法糖使得整體體驗比以往更好:是的,PHP支援用[ ]定義陣列;是的,PHP支援新建立的物件這樣呼叫函式:(new Foo())->bar();是的,PHP支援陣列這樣獲取元素:$foo->bar()[1]。
PHP甚至向它自己曾犯過的錯誤學習:register_globals 和 magic_quotes被徹底刪除了。
PHP有了內建web伺服器以方便本地測試,它能以微秒級的速度啟動。
接下來的挑戰:我們怎樣更新在網路上的講解PHP的教程?在PHP程式中最好的支援WebSocket的技術是什麼?
PHP生態系統
擁有一個好的語言是很好的,但是擁有一個好的生態系統更棒。在過去的幾年PHP生態系統演變了很多。
Git
對於Git我不想討論太多,Git被到處使用,PHP很快擁抱了Git。幾乎所有PHP類庫、框架和產品都在使用Git,包括PHP本身。
Composer
兩年前,我想去掉我在symfony 1中hack的醜陋PEAR程式碼以支援外掛。我想替換成能管理專案依賴的東西,而不是一個像PEAR一樣的整體的安裝,所以我試著尋找能管理軟體依賴的最佳的演算法。我幾乎嘗試了所有可能:從Perl到Ruby,從Debian到Redhat。結果沒有讓我滿意的,只有我自己的解決方案恰巧能工作…當然這只是我的經驗只談。之後我偶然發現了ZYpp,就是它了。ZYpp使用布林可滿足性問題解來管理依賴。多虧了Nils Adermann和Jordi Boggiano的辛苦工作,PHP現在有了做好的管理依賴的工具–Composer。
是的,PHP比其他語言有了更好的依賴管理工具。
由於有了Git,Composer,和PHP內建web伺服器,我們更容易下載/測試/安裝一個PHP專案。
想測試Symfony(使用PHP5.4)?
$ composer.phar create-project symfony/framework-standard-edition $ cd framework-standard-edition $ ./app/console server:run
想測試Silex?
$ composer.phar create-project fabpot/silex-skeleton $ cd silex-skeleton $ php -S localhost:8888 -t web/
還不知道Composer?你應該瞭解下它了。
瀏覽下主要的Composer倉庫Packagist,它已經擁有1900多個包,且它們在不到三個月的時間裡被安裝了上百萬次。
接下來的挑戰:在下一個PHP版本里內建Composer?
合作
社群合作是本文說的重點,也是我最引以為豪的地方。我們開始看到PHP專案中更好的合作,甚至大專案也是如此,大到你可以忽略其他專案了。
phpBB,Drupal,ez Publish,Symfony,和很多其他專案(比如phpDocumentor, PHPUnit, Behat, Zikula, Propel, Doctrine, Midgard等等)都在共享程式碼。是的,他們彼此是競爭者,但是他們都理解彼此合作是很重要的。Composer能很好地促進這種合作。
接下來的挑戰:說服更多的專案加入這個趨勢中來。
結論
讓我再重申一次,PHP可能不是最好的程式語言,我也是第一個說出它的怪處的,但是PHP是迄今為止最好的web平臺。
相關文章
- 開發者 速度遠比你想象的重要
- 學習 React.js 比你想象的要簡單ReactJS
- 人工智慧,中美之間的差距遠比你想象的大人工智慧
- [譯] WebAssembly中的記憶體(為什麼它比你想象的更安全)Web記憶體
- 講透JAVA Stream的collect用法與原理,遠比你想象的更強大Java
- 你擁有的知識比你想象中更有意義和價值
- 獨立遊戲風險高?也許立項選題遠比你最開始想象的重要遊戲
- 理論與現實,人工智慧“活著”比你想象要困難人工智慧
- 斯德哥爾摩大學:研究發現你的嗅覺可能比你想象的更靈敏
- 為遊戲準備新聞資料包,這可能比你想象中更重要遊戲
- 三個爸爸新風空氣清淨機FA-N280評測 比你想象更強大
- 帶你深入瞭解遠端醫療,智慧醫療遠比你想象中複雜
- 程式設計師如何實現“網際網路+”02-你擁有的知識比你想象的更有意義和價值程式設計師
- 開發者,速度遠比你以為的重要
- 大資料 比你更懂你大資料
- 比你們網站方便多了網站
- 開源:比想象中大,也沒想象中重要
- 想象下未來的NOSQLSQL
- Bitmap 比你想的更費記憶體 | 吊打 OOM記憶體OOM
- 貧窮限制了想象,這樣的小程式讓你的想象力遍地開花
- 小程式的增速,遠超我們的想象
- Hyperf 2.0 釋出!想象的開端!
- ? Hyperf 2.0 釋出!想象的開端!
- [期望] 想象中的技術迷你書
- 你解決的問題比你編寫的程式碼更重要!
- 關於 @synchronized,這兒比你想知道的還要多synchronized
- CSS 滾屏效果,要比想象中的難CSS
- 巨頭們的程式語言之爭:我的語言就是比你好
- 寫程式碼時,編譯器比你聰明編譯
- JavaScript中class繼承超乎你的想象《一》JavaScript繼承
- 《白色實驗室》:想象力是遊戲的翅膀遊戲
- 超現實的3D作品,充滿想象3D
- 想象一個人工智慧無處不在的世界人工智慧
- std::string 的 Copy-on-Write:不如想象中美好
- GPT釋放的意圖識別想象力GPT
- 都是學 AI,為什麼別人薪資比你高?AI
- Switch 的生命週期比你想的更長,一切早就埋下了伏筆
- 硬核分享:想象中的人物畫法