PHP比你想象的好得多
有很多對(duì)于PHP的抱怨,甚至這些抱怨也出自很多聰明的人。當(dāng)Jeff Atwood寫下對(duì)于PHP的另一篇抱怨文章之后,我思考了下PHP的好的方面。
這些抱怨最大的問題是他們出自很多仍在使用舊版本PHP的人。他們或許是不愿意關(guān)心或許是不愿意承認(rèn)PHP不管在語言層面還是在社區(qū)層面都在以很快的速度演變。實(shí)際上它比任何其他語言或者web平臺(tái)都演變的快。盡管并不總是如此,但是過去的五年P(guān)HP經(jīng)歷了一個(gè)驚人的歷程。
在說最近PHP社區(qū)取得的驚人成就之前,我們先來看看一些有趣的數(shù)字:PHP被77.9%的服務(wù)端編程語言已知的網(wǎng)站使用。Wordpress被全世界16.6%的網(wǎng)站使用。使用率最高的三個(gè)CMS建站系統(tǒng)是:第一的Wordpress份額為54.3%,第二的Joomla份額為9.2%,第三的Drupal份額為6.8%。這三個(gè)產(chǎn)品都是用PHP寫的。
PHP一定做了一些正確的事,不是嗎?
現(xiàn)在,我來告訴你吧,PHP的絕技在于:盡管經(jīng)過了這么多年的變化,PHP對(duì)于非技術(shù)人員依然是最容易學(xué)習(xí)的語言,它讓人可以比其他技術(shù)更快地建立動(dòng)態(tài)網(wǎng)站,也讓人沒有麻煩地托管網(wǎng)站。PHP可能不是這個(gè)世界上設(shè)計(jì)最好的語言,但是它能讓你完成事情(get things done),這一點(diǎn)是毋庸置疑的。
PHP語言
PHP5.0(2004年發(fā)布)帶來了很實(shí)用的對(duì)象模型…等等,我在說8年前發(fā)布的東西。快進(jìn)到現(xiàn)在的PHP5.4,即PHP最近的版本,帶來了對(duì)于現(xiàn)代web語言你夢(mèng)寐以求的東西:是的,PHP支持了命名空間(namespaces);是的,PHP支持閉包(closure);是的,PHP支持traits。
盡管需要花費(fèi)一些時(shí)間,但是PHP5.4帶來了一些語法糖使得整體體驗(yàn)比以往更好:是的,PHP支持用[ ]定義數(shù)組;是的,PHP支持新創(chuàng)建的對(duì)象這樣調(diào)用函數(shù):(new Foo())->bar();是的,PHP支持?jǐn)?shù)組這樣獲取元素:$foo->bar()[1]。
PHP甚至向它自己曾犯過的錯(cuò)誤學(xué)習(xí):register_globals 和 magic_quotes被徹底刪除了。
PHP有了內(nèi)置web服務(wù)器以方便本地測(cè)試,它能以微秒級(jí)的速度啟動(dòng)。
接下來的挑戰(zhàn):我們?cè)鯓痈略诰W(wǎng)絡(luò)上的講解PHP的教程?在PHP程序中最好的支持WebSocket的技術(shù)是什么?
PHP生態(tài)系統(tǒng)
擁有一個(gè)好的語言是很好的,但是擁有一個(gè)好的生態(tài)系統(tǒng)更棒。在過去的幾年P(guān)HP生態(tài)系統(tǒng)演變了很多。
Git
對(duì)于Git我不想討論太多,Git被到處使用,PHP很快擁抱了Git。幾乎所有PHP類庫、框架和產(chǎn)品都在使用Git,包括PHP本身。
Composer
兩年前,我想去掉我在symfony 1中hack的丑陋PEAR代碼以支持插件。我想替換成能管理項(xiàng)目依賴的東西,而不是一個(gè)像PEAR一樣的整體的安裝,所以我試著尋找能管理軟件依賴的最佳的算法。我?guī)缀鯂L試了所有可能:從Perl到Ruby,從Debian到Redhat。結(jié)果沒有讓我滿意的,只有我自己的解決方案恰巧能工作…當(dāng)然這只是我的經(jīng)驗(yàn)只談。之后我偶然發(fā)現(xiàn)了ZYpp,就是它了。ZYpp使用布爾可滿足性問題解來管理依賴。多虧了Nils Adermann和Jordi Boggiano的辛苦工作,PHP現(xiàn)在有了做好的管理依賴的工具–Composer。
是的,PHP比其他語言有了更好的依賴管理工具。
由于有了Git,Composer,和PHP內(nèi)置web服務(wù)器,我們更容易下載/測(cè)試/安裝一個(gè)PHP項(xiàng)目。
想測(cè)試Symfony(使用PHP5.4)?
$ composer.phar create-project symfony/framework-standard-edition
$ cd framework-standard-edition
$ ./app/console server:run
想測(cè)試Silex?
$ composer.phar create-project fabpot/silex-skeleton
$ cd silex-skeleton
$ php -S localhost:8888 -t web/
還不知道Composer?你應(yīng)該了解下它了。
瀏覽下主要的Composer倉庫Packagist,它已經(jīng)擁有1900多個(gè)包,且它們?cè)诓坏饺齻€(gè)月的時(shí)間里被安裝了上百萬次。
接下來的挑戰(zhàn):在下一個(gè)PHP版本里內(nèi)置Composer?
合作
社區(qū)合作是本文說的重點(diǎn),也是我最引以為豪的地方。我們開始看到PHP項(xiàng)目中更好的合作,甚至大項(xiàng)目也是如此,大到你可以忽略其他項(xiàng)目了。
phpBB,Drupal,ez Publish,Symfony,和很多其他項(xiàng)目(比如phpDocumentor, PHPUnit, Behat, Zikula, Propel, Doctrine, Midgard等等)都在共享代碼。是的,他們彼此是競(jìng)爭(zhēng)者,但是他們都理解彼此合作是很重要的。Composer能很好地促進(jìn)這種合作。
接下來的挑戰(zhàn):說服更多的項(xiàng)目加入這個(gè)趨勢(shì)中來。
結(jié)論
讓我再重申一次,PHP可能不是最好的編程語言,我也是第一個(gè)說出它的怪處的,但是PHP是迄今為止最好的web平臺(tái)。
譯自:PHP is much better than you think
相關(guān)文章
PHP調(diào)用三種數(shù)據(jù)庫的方法(2)
PHP調(diào)用三種數(shù)據(jù)庫的方法(2)...2006-10-10優(yōu)化NFR之一 --MSSQL Hello Buffer Overflow
優(yōu)化NFR之一 --MSSQL Hello Buffer Overflow...2006-10-10PHPnow安裝服務(wù)[apache_pn]失敗的問題的解決方法
解決PHPnow安裝服務(wù)[apache_pn]失敗的問題2010-09-09WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置 與其他基本版本安裝相同! 第一: 裝http服務(wù)器apache2008-03-03《PHP編程最快明白》第二講 數(shù)字、浮點(diǎn)、布爾型、字符串和數(shù)組
編寫程序最終就是瀏覽器看到的html代碼的表現(xiàn)形式,所以,就先研究一下這五種類型。2010-11-11