PHP給人印象最深的莫過於:你不必因為想要用好它就去深入了解這種語言。想一想,在你所知道的語言中有多少能做到這一點呢?其中比較明顯的一個就是java了,僅編一個hello world就需要了解不少的知識,更別提創建一個web應用程序了。但對PHP,這些都不在話下。
應該說PHP在訪問Bad Behavior時比Perl還是強一點點的。記得在Web剛興起的那段日子,聽到人們常說他們將用Perl創建大型程序,雖然也知道(沒有辦法說服他們)最終會失敗。
另一方面,PHP確實具有創建一些較大程序的能力,比如Drupal。我的朋友Nancy Nicolaisen(也是這裡的Blogger)說她想建立一個旅游網站,我建議她看看Drupal。她照做了,並最終選擇了它。因為在她看來Drupal的用戶社區太優秀了,為她在建立站點並順利上線提供了大量的幫助。
PHP讓菜鳥快速上手並直接去做他們感興趣的東西,而無須關心那些繁雜的編程理論和實踐。你只要去做就可以在網頁上得到想要的。
然而這也是這個語言的問題所在。你會發現存在許多完全錯誤的PHP實現的例子,這一般是都由那些互相copy的人寫的,因為沒有人知道問題到底是怎樣的。我最先用到的例子之一就是PHP的文件鎖。結果是找到很多,但沒有正確的。事實上,PHP主要用在可以處理所有一致性問題的數據庫上面,這樣人們就不必考慮一些底層問題了。但是程序語言在與數據庫的高層交互和文件系統的底層交互上的處理方式是一樣的,所以這裡不存在初學者所需的“龍來了”的標志。我感覺社區裡有太多“坐享其成”的人,而真正了解並理解基本原理的人卻寥寥無幾。所以就出現了在無知的狀態下闖入了這片少有人問津的領域而進行濫用的情形。
之後,PHP5出現了,其為集C++和Java之大成者。它的這個強大特性著實令人振奮,而我的憂慮感卻開始加重了:人們看來隨便就可以擁有所有特性而不去仔細考慮各個細節和對語言產生的方方面面的影響。相反,在過去的十多年來我關注著Python語言所做的每一個謹慎的抉擇。時間會證明,或許PHP社區將會解決如何將所有這些特性都派上用場的問題,但我對此疑慮重重。
與此同時,在我更新緩慢的新站點上我使用了PHP。關鍵是,我只在很小的范圍內用到它。例如,PHP可以解決無法輕易include文件這樣以一個低級的HTML問題。PHP做到了,並且也可以很容易地在整個網站上部署我的設計方案。有時你只是想在頁面上嵌入一個你做的小東西,這也是PHP所擅長的。
但是,只要目標變得稍微有點復雜,我認為最好還是轉到Python上。因此,PHP還是僅限於小范圍應用,我不想廣泛使用它。