語言簡介
PHP是“PHP:Hypertext Preprocessor”的縮寫,即“
超文本預處理器”。PHP是一種功能強大,並且簡便易用的
腳本語言。
PHP
PHP是一種簡單、輕便的伺服器端
腳本語言。
PHP最初是作為一個快速、實用的工具包出現的。1994年,為了在自己的網站上增加一個小巧而實用的訪客追蹤系統,Rasmus Lerdorf編寫了PHP的雛形程式。這是一個用Perl封裝的簡單工具。由於使用效果並不理想,Rasmus又用C語言重寫了這個工具。
後來,更多的人注意到這個輕巧而簡便的程式,並且要求增加更多的功能。Rasmus決定發布一個完整的版本,將其命名為Personal Home Page Tools。後來,Rasmus又發布了一個名為FI的可以做SQL查詢的工具。
PHP2
1996年Rasmus發布了PHP/FI2.0,這是一個基本完善的PHP程式包。它不僅可以訪問資料庫,而且可以嵌入HTML頁面。此時,PHP/FI2.0以及吸引了大量的程式開發人員。在眾多程式設計師之中,也包括了Zeev Suraski和Andi Gutmans,他們就是後來PHP3的始作者。由於不滿足於PHP/FI在大型項目中的表現,Zeev和Andi作了重大的改進。
PHP3
1998年末,PHP3的第一個官方正式版本發行,其特色是具有更好的執行效果以及更清晰的結構。除此之外,PHP3的強大的功能還在於它的可擴展性。除了給最終用戶提供資料庫、協定和API的基礎結構,它的可擴展性吸引了大量的開發人員加入並提交新的模組。
這個全新的語言伴隨著一個新的名稱發布。這個名稱更具廣泛意義,而不僅局限於“
個人主頁工具”的概念。它被命名為簡單的縮寫“
PHP”。這是一種
遞歸的縮寫,它的全稱是——PHP:Hypertext Preprocessor。
不久,Zeev Suraski和Andi Gutmans投入到了全新的PHP的開發之中。設計目標是增強程式運行性能和PHP自身代碼的模組性。
PHP4
新的
PHP核心被成為“Zend”(以Zeev和Andi的名字命名)引擎,於2000年5月隨著新版PHP4.0發布。
PHP4的性能較PHP3有著顯著的提高。相同的腳本在PHP4中運行,最高可以有近10倍的性能提升。並且
Zend提供了的腳本最佳化器,可以把
源程式轉為
二進制編譯代碼,提高性能的同時,也保護了程式源碼不被暴露。
在PHP4中增加了對各種
Web伺服器(如
Apache、
IIS/
PWS及OmniHTTPd等)的支持。此外,PHP4還增加了一些新的語言特性,如豐富的
數組操作函式、完整的會話機制、對輸出
快取的支持等。PHP4也對一些跨平台的技術提供了擴展支持,如對Adobe PDF、
SWF、
Java、Microsoft . NET等技術的支持。
PHP4還增加了對類與對象的支持。儘管PHP4在這方面並不完善,但還是大大改善了對
面向對象程式設計的支持。PHP4中的Pear庫(PHP Extension and Application Repository)就是
面向對象的套用與實踐的最好例證。
PHP5
儘管
PHP4的發展是如此迅猛,但較之於其他流行的開發語言還是缺乏一些關鍵的功能特性,比如,PHP4中的
面向對象功能並不完善,也無法實現異常(Exception)的捕捉與處理。因此在一些特殊問題的處理上還是捉襟見肘的。
2004年7月,PHP5正式版本的發布,標誌著一個全新的
PHP時代的到來。它的核心是第二代
Zend引擎,並引入了對全新的
PECL模組的支持。PHP5的最大特點是引入了面向對象的全部機制,並且保留了向下的兼容性。程式設計師不必再編寫缺乏功能性的類,並且能夠以多種方法實現類的保護。另外,在對象的集成等方面也不再存在問題。使用PHP5引進了類型提示和
異常處理機制,能更有效的處理和避免錯誤的發生。
在不斷更新的同時,PHP5依然保留對舊有的
PHP4程式可以運行於PHP5的平台上而不會出現較大問題。隨著
MySQL資料庫的發展,PHP5還綁定了新的
MySQLi擴展模組,它提供了一些更加有效的方法和實用工具用於處理資料庫操作。這些方法大都以
面向對象的方式實現,同時也極大地提高了基於資料庫的Web項目的執行速度。
另外,PHP5中還改進了創建
動態圖片的功能,能夠支持多種
圖片格式(如PNG、GIF、TTIF、JPGE等)。PHP5以及內置了對GD2庫的支持,因此安裝GD2庫(主要指
UNIX系統中)也不再是件難事,這使得處理圖像十分簡單和高效。
大多數Web程式開發者依然將XML作為一個徹底的簡單資料庫使用。PHP5中也採用了一系列簡單易用、功能強大的方法處理XML文檔。
今天,已經有包括
雅虎和亞馬遜等在內的數百萬網站,以及眾多的開發人員和編程愛好者正在使用
PHP。從最初的PHP/FI到PHP5,PHP的發展是及其迅猛的,其未來的發展前景也必定令人矚目。
GO PHP5
PHP5發布3年後,
PHP4仍然在為各大
虛擬主機提供服務,大量主機hosting上還是永遠的php4。之所以造成這種情況,有著多方面的原因。
2007年7月5日,一個
PHP開發者聯盟宣布,作為共同使PHP
開發者社區完全遷移到PHP的5版本的努力的一部分,一些主要的開源PHP項目從2008年2月5日起在他們即將發布的軟體中將放棄支持PHP舊的版本。
許多基於
PHP的網站套用現在既有運行
PHP4的,也有運行PHP5的。PHP4在2000年發布,並且迅速鞏固了作為統治性的網路開發語言的地位。PHP5發布於2004年,它在功能上有顯著的改進,但是主要由於許多新平台發布伴隨著“雞和蛋”的問題,它發展很慢。首先PHP開發者還沒摸透在沒有
php4的情況下,用php5來跑從前的套用會不會有潛在的問題。大量
主機上仍然安裝的是php4,這會使用戶避免選擇php5 only的web應用程式。也是因為這個原因,大量主機商還不能馬上升級到php5,因為他們不知道用戶將要跑php4或是php5的web套用。這樣一來,php的開發者越發不能擺脫php4,他們為了適應環境,寫出來的代碼可能都是php4/php5兼容的。
這對php開發者來說,是如同夢魘一般的一個
死循環。一些open source的php開發團體為了擺脫這個困境,終於決定做出一些動作來打破僵局了!!他們在2008年2月份以後發布程式將僅僅官方的支持php 5.2.0以後的版本(官方的支持意味著某些程式還是能保持
php4的兼容性的,但是不承諾)!!這個活動被稱之為GoPHP5!!這些php開發團體已知的名單如下:
自從推辦goPHP5,已經有超過 100 個
軟體開發項目和超過 200 個網路
主機支援 PHP 5.2。相對從前,現在可以輕鬆地找到託管解決方案,軟體開發商亦可以使用 PHP 5 具吸引力的新功能,而不需要擔心他們的用戶別無選項。
對於用戶來說,使用
php4或者php5無關緊要,他需要的僅僅是他的程式可以run。那么列表中擁有大量用戶基礎的php程式的轉向,將會是驅動主機商升級到php5的極大動力。
PHP特點
字元串與數組處理
字元串和
數組是所有計算機程式語言中最基本的數據結構。在各種語言中,對這兩種數據結構的支持是完善的,PHP也是如此。作為一種面向Web開發的程式語言,
PHP也有著自己的獨特性。
PHP有著簡單易用和功能強大的特點,這完全要歸功於其開放的模組化設計。在基於
Zend引擎的支持和最佳化下,各種各樣的擴展模組,其功能已經覆蓋幾乎所有的Web套用。
URL的處理
利用URL函式館,PHP可以用簡單的方法對URL地址進行解碼或編碼。而在此之前,需要編寫一組代碼加以實現。
正則表達式是一種強大的
字元串分析工具。正則表達式早期僅用於
UNIX系統程式,現在已經被絕大多數系統,程式所支持。隨著正則表達式移植到交叉平台的程式語言的發展,其功能也日益完善。
單詞拼寫的處理
利用單詞拼寫檢查庫PSpell,
PHP可以像Word中的“單詞拼寫檢查”一樣,對文本中的錯誤拼寫進行指正。儘管這不常用,但對於某些場合(如輔助編輯進行校勘),這種處理是非常有益的。
對不同類型檔案的支持
PHP不僅僅局限於HTML和文本檔案的處理,也可以符合特定格式的檔案進行快速處理。例如對於
CVS(逗號分隔檔案)、INI(Windows配置檔案)以及
XML檔案,PHP中都有專用的
解析函式。除了上述文本檔案,PHP還提供可以讀取
ZIP檔案的zlib壓縮檔案庫。
PHP能夠非常簡便的輸出文本,如
XHTML以及任何其他形式的XML檔案。PHP還能動態的輸出圖像(GD2庫)、PDF檔案(
PDFLib庫)甚至
Flash動畫(LibSWF和Ming庫)。在Windows系統中,
PHP能夠在伺服器端開闢出一塊動態的快取空間,從而直接列印這些檔案(使用Printer擴展)。
簡便的資料庫操作
PHP最顯著的特徵之一,是它支持很大範圍的
資料庫系統。用戶會發現,利用PHP編寫基於資料庫支持的
動態網頁簡單得難以置信。目前,PHP支持如表1-1所示的資料庫系統。
Adabas D dBase Empress
FilePro(唯讀) Hyperwave IBM DB2
Informix Ingres InterBase
FrontBase MSQL Direct MS-SQL
MySQL ODBC Oracle
Ovrimos PostgreSQL SQLite
Solid Sybase Velocis
UXIX dbm
目錄與檔案的操作
檔案系統是作業系統的主要組成部分,是
數據存儲的基本單元。利用目錄和檔案函式,PHP可以對本地檔案系統進行直接操作,如對檔案或目錄進行的創建、刪除和讀取操作,也可以對其
所有者許可權、組別等信息進行查詢和變更操作。
當激活了phpini檔案中的“allow_url_fopen”選項後,利用簡單的 fopen()或
fwrite()等函式就可以對遠程檔案進行操作。例如:程式可以讀取或下載遠程
Web伺服器的檔案;對於具有適當許可權的用戶,還可以登錄遠程
FTP伺服器進行數據的保存或下載操作,甚至可以使用
syslog()函式進行分散式日誌的管理和維護。
協定支持
通常,用戶在編程過程中還會涉及到各種不同接口之間的通信問題,如打開檔案並讀取,或者建立一個
套接字(Socket)連線傳送數據。這些過程都是基於各種
通信協定完成的。所謂通信協定,實際就是系統間傳送和接受數據時所遵循的特定方法。
PHP支持諸如FTP、
LDAP、
IMAP、NNTP、
POP3、HTTP、 COM(Windows環境)等大量的通信協定。PHP還可以開放原始
網路連線埠,使得任何其他的協定能夠協同工作。PHP支持和所有Web開發語言之間的 WDDX複雜數據交換。目前,PHP已經支持了對
Java對象的使用,並且可以將它們自由的用作PHP對象。
發展趨勢
PHP作為最成熟的開源體系LAMP(Linux,Apache,MySQL,
PHP)的重要一員,以其簡單性、開放性、低成本、安全性和適用性,受到越來越多的Web程式設計師的歡迎和喜愛。
PHP中提供了作為
編碼語言所有的基本功能。此外,它還提供許多實用的功能,使得PHP比其他程式語言更適合
動態網頁的開發。針對企業級Web套用,PHP也不斷地完善和增加新的功能。
PHP是源碼開放的,這意味著其代碼的核心部分可以被免費使用。所有源碼、文檔可以在PHP官方網站上獲得。用戶可以自由複製、編譯、分發其拷貝。任何一個用PHP編寫的程式都屬於用戶自己,並且可以自行處理。
正式由於這種開源精神,才使
PHP社區可以聚集眾多的愛好者,也使得PHP有如此迅猛的發展。PHP的更新速度,以及發現和修正錯誤的速度是非常迅速的。可以看到,幾乎每周都有一個新版本的PHP程式包發布。
目前,PHP的官方維護者和推動者Zend公司已經加快了PHP企業級套用的步伐。隨著PHP5的套用不斷擴大,
Zend公司還將推出一個標準的PHP開發框架Zend Framework。通過這一框架,PHP開發者可以快速地構建Web套用。
PHP還具有優秀的平台兼容性。PHP源於
UNIX系統平台,尤其是PHP、MySQL、 Apache和
Linux組合,備受
PHP愛好者的歡迎。不僅如此,PHP在Windows系列作業系統上也有出色的表現。其良好的程式界面、語言易用性等特點吸引了微軟的開發人員。目前,有訊息稱未來的Windows . NET
開發環境將集成PHP,這也意味著PHP的用戶群將日益壯大。
如同ASP具有Windows自己的開發平台一樣,
Zend也為PHP設計了全新的開發環境 Zend Studio。這是一款集
程式調試、系統發布以及開發環境為一體的PHP開發軟體。這將大大簡化PHP開發過程,並且縮短相應的
測試周期。另外,Zend 還將與
IBM公司合作推出集成Zend IDE特性的Eclipse軟體供大家使用。
PHP是廣泛及通用的
腳本語言,它尤其適合於Web開發。PHP是世界上主要的網路開發語言之一,運行在世界三分之一的伺服器上。它是從
雅虎到Facebook等公司的平台選擇,也是共享
主機上最廣泛的開發平台,為世界上數百萬的網站提供動力。
隨著PHP5版本性能的提升,以及
面向對象功能的完善,PHP也逐漸開始於面向企業級套用。PHP的發展前景將無限廣闊。
現在php5的最新版本為php5.4.3,較php5.3增強了安全特性,去掉了一些威脅安全的函式如global_register等,去掉了安全模式。