PHP5
PHP5,是PHP官方于2004年7月,發(fā)布的一個(gè)全新的版本,標(biāo)志著一個(gè)全新的PHP時(shí)代的到來。它的核心是第二代Zend引擎,并引入了對(duì)全新的PECL模塊的支持。PHP5的最大特點(diǎn)是引入了MySQL數(shù)據(jù)庫的發(fā)展,PHP5還綁定了新的MySQLi擴(kuò)展模塊,它提供了一些更加有效的方法和實(shí)用工具用于處理數(shù)據(jù)庫操作。這些方法大都以面向?qū)ο蟮姆绞綄?shí)現(xiàn),同時(shí)也極大地提高了基于數(shù)據(jù)庫的Web項(xiàng)目的執(zhí)行速度。
另外,PHP5中還改進(jìn)了創(chuàng)建動(dòng)態(tài)圖片的功能,目前能夠支持多種圖片格式(如PNG、GIF、TTIF、JPGE等)。PHP5以及內(nèi)置了對(duì)GD2庫的支持,因此安裝GD2庫(主要指UNIX系統(tǒng)中)也不再是件難事,這使得處理圖像十分簡單和高效。
大多數(shù)Web程序開發(fā)者依然將XML作為一個(gè)徹底的簡單數(shù)據(jù)庫使用。PHP5中也采用了一系列簡單易用、功能強(qiáng)大的方法處理XML文檔。
今天,已經(jīng)有包括Yahoo.com和Amazon.com等在內(nèi)的數(shù)百萬網(wǎng)站,以及眾多的開發(fā)人員和編程愛好者正在使用PHP。從最初的PHP/FI到現(xiàn)在的PHP5,PHP的發(fā)展是及其迅猛的,其未來的發(fā)展前景也必定令人矚目。
PHP5特點(diǎn)[ ]
PHP有著簡單易用和功能強(qiáng)大的特點(diǎn),這完全要?dú)w功于其開放的模塊化設(shè)計(jì)。在基于Zend引擎的支持和優(yōu)化下,各種各樣的擴(kuò)展模塊,其功能已經(jīng)覆蓋幾乎所有的Web應(yīng)用。
字符串與數(shù)組處理[ ]
字符串和數(shù)組是所有計(jì)算機(jī)編程語言中最基本的數(shù)據(jù)結(jié)構(gòu)。在各種語言中,對(duì)這兩種數(shù)據(jù)結(jié)構(gòu)的支持是完善的,PHP也是如此。作為一種面向Web開發(fā)的程序語言,PHP也有著自己的獨(dú)特性。
- URL的處理:利用URL函數(shù)庫,PHP可以用簡單的方法對(duì)URL地址進(jìn)行解碼或編碼。而在此之前,需要編寫一組代碼加以實(shí)現(xiàn)。
- 單詞拼寫的處理:利用單詞拼寫檢查庫PSpell,PHP可以想Word中的“單詞拼寫檢查”一樣,對(duì)文本中的錯(cuò)誤拼寫進(jìn)行指正。盡管這不常用,但對(duì)于某些場(chǎng)合(如輔助編輯進(jìn)行??保?,這種處理是非常有益的。
- 正則表達(dá)式:正則表達(dá)式是一種強(qiáng)大的字符串分析工具。正則表達(dá)式早期僅用于UNIX系統(tǒng)程序,現(xiàn)在已經(jīng)被絕大多數(shù)系統(tǒng),程序所支持。隨著正則表達(dá)式移植到交叉平臺(tái)的程序語言的發(fā)展,其功能也日益完善。
- 數(shù)據(jù)的串行化:使用serialize()及unserialize()等函數(shù),可以將數(shù)組、對(duì)象等數(shù)據(jù)進(jìn)行序列化編碼,從而方便其在數(shù)據(jù)庫或會(huì)話周期中的存儲(chǔ)。另外,利用WDDX(Web分布式數(shù)據(jù)格式)串行化數(shù)據(jù),可以在應(yīng)用環(huán)境中交換更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
目錄與文件的操作[ ]
文件系統(tǒng)是操作系統(tǒng)的主要組成部分,是數(shù)據(jù)存儲(chǔ)的基本單元。利用目錄和文件函數(shù),PHP可以對(duì)本地文件系統(tǒng)進(jìn)行直接操作,如對(duì)文件或目錄進(jìn)行的創(chuàng)建、刪除和讀取操作,也可以對(duì)其所有者權(quán)限、組別等信息進(jìn)行查詢和變更操作。
當(dāng)激活了php.ini文件中的“allow_url_fopen”選項(xiàng)后,利用簡單的 fopen()或fwrite()等函數(shù)就可以對(duì)遠(yuǎn)程文件進(jìn)行操作。例如:程序可以讀取或下載遠(yuǎn)程Web服務(wù)器的文件;對(duì)于具有適當(dāng)權(quán)限的用戶,還可以登錄遠(yuǎn)程FTP服務(wù)器進(jìn)行數(shù)據(jù)的保存或下載操作,甚至可以使用syslog()函數(shù)進(jìn)行分布式日志的管理和維護(hù)。
對(duì)不同類型文件的支持[ ]
PHP不僅僅局限于HTML和文本文件的處理,也可以符合特定格式的文件進(jìn)行快速處理。例如對(duì)于CVS(逗號(hào)分隔文件)、INI(Windows配置文件)以及XML文件,PHP中都有專用的解析函數(shù)。除了上述文本文件,PHP還提供可以讀取 ZIP文件的zlib壓縮文件庫。
PHP能夠非常簡便的輸出文本,如XHTML以及任何其他形式的XML文件。PHP還能動(dòng)態(tài)的輸出圖像(GD2庫)、PDF文件(PDFLib庫)甚至Flash動(dòng)畫(LibSWF和Ming庫)。在Windows系統(tǒng)中,PHP能夠在服務(wù)器端開辟出一塊動(dòng)態(tài)的緩存空間,從而直接打印這些文件(使用Printer擴(kuò)展)。
簡便的數(shù)據(jù)庫操作[ ]
PHP最顯著的特征之一,是它支持很大范圍的數(shù)據(jù)庫系統(tǒng)。用戶會(huì)發(fā)現(xiàn),利用PHP編寫基于數(shù)據(jù)庫支持的動(dòng)態(tài)網(wǎng)頁簡單得難以置信。目前,PHP支持如下所示的數(shù)據(jù)庫系統(tǒng)。
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
對(duì)各種協(xié)議的支持[ ]
通常,用戶在編程過程中還會(huì)涉及到各種不同接口之間的通信問題,如打開文件并讀取,或者建立一個(gè)套接字(Socket)連接發(fā)送數(shù)據(jù)。這些過程都是基于各種通信協(xié)議完成的。所謂通信協(xié)議,實(shí)際就是系統(tǒng)間發(fā)送和接受數(shù)據(jù)時(shí)所遵循的特定方法。
PHP支持諸如FTP、LDAP、IMAP、NNTP、POP3、HTTP、COM(Windows環(huán)境)等大量的通信協(xié)議。PHP還可以開放原始網(wǎng)絡(luò)端口,使得任何其他的協(xié)議能夠協(xié)同工作。PHP支持和所有Web開發(fā)語言之間的 WDDX復(fù)雜數(shù)據(jù)交換。目前,PHP已經(jīng)支持了對(duì)Java對(duì)象的使用,并且可以將它們自由的用作PHP對(duì)象。
PHP5普及狀況[ ]
PHP5發(fā)布3年后,PHP4仍然在為各大虛擬主機(jī)提供服務(wù),大量主機(jī)hosting上還是永遠(yuǎn)的php4。之所以造成這種情況,有著多方面的原因。
2007年7月5日,一個(gè)PHP開發(fā)者聯(lián)盟宣布,作為共同使PHP開發(fā)者社區(qū)完全遷移到PHP的5版本的努力的一部分,一些主要的開源PHP項(xiàng)目從2008年2月5日起在他們即將發(fā)布的軟件中將放棄支持PHP舊的版本。
作為配合GoPHP5.org努力的一部分,Symfony, Typo3, phpMyAdmin, Drupal, Propel, 和Doctrine這些項(xiàng)目已經(jīng)都宣布2008年2月5日以后他們的下一個(gè)版本將需要PHP5.2,而且已經(jīng)向其它PHP項(xiàng)目和應(yīng)用發(fā)出了公開邀請(qǐng),包括開源的和非開源的,希望他們參與到這項(xiàng)努力中來。
許多基于PHP的網(wǎng)站應(yīng)用現(xiàn)在既有運(yùn)行PHP4的,也有運(yùn)行PHP5的。PHP4在2000年發(fā)布,并且迅速鞏固了作為統(tǒng)治性的網(wǎng)絡(luò)開發(fā)語言的地位。PHP5發(fā)布于2004年,它在功能上有顯著的改進(jìn),但是主要由于許多新平臺(tái)發(fā)布伴隨著“雞和蛋”的問題,它發(fā)展很慢。
首先PHP開發(fā)者還沒摸透在沒有php4的情況下,用php5來跑從前的應(yīng)用會(huì)不會(huì)有潛在的問題。大量主機(jī)上仍然安裝的是php4,這會(huì)使用戶避免選擇 php5 only的web應(yīng)用程序。也是因?yàn)檫@個(gè)原因,大量主機(jī)商還不能馬上升級(jí)到php5,因?yàn)樗麄儾恢烙脩魧⒁躳hp4或是php5的web應(yīng)用。這樣一來,php的開發(fā)者越發(fā)不能擺脫php4,他們?yōu)榱诉m應(yīng)環(huán)境,寫出來的代碼可能都是php4/php5兼容的。
這對(duì)php開發(fā)者來說,是如同夢(mèng)魘一般的一個(gè)死循環(huán)。一些open source的php開發(fā)團(tuán)體為了擺脫這個(gè)困境,終于決定做出一些動(dòng)作來打破僵局了?。∷麄?cè)?008年2月份以后發(fā)布程序?qū)H僅官方的支持php 5.2.0以后的版本(官方的支持意味著某些程序還是能保持php4的兼容性的,但是不承諾)??!這個(gè)活動(dòng)被稱之為GoPHP5??!這些php開發(fā)團(tuán)體已知的名單如下:
自從推辦goPHP5,已經(jīng)有超過 100 個(gè)軟件開發(fā)項(xiàng)目和超過 200 個(gè)網(wǎng)絡(luò)主機(jī)支援 PHP 5.2。相對(duì)從前,現(xiàn)在可以輕松地找到托管解決方案,軟件開發(fā)商亦可以使用 PHP 5 具吸引力的新功能,而不需要擔(dān)心他們的用戶別無選項(xiàng)。
對(duì)于用戶來說,使用php4或者php5無關(guān)緊要,他需要的僅僅是他的程序可以run。那么列表中擁有大量用戶基礎(chǔ)的php程序的轉(zhuǎn)向,將會(huì)是驅(qū)動(dòng)主機(jī)商升級(jí)到php5的極大動(dòng)力。