WIKI使用導(dǎo)航
站長百科導(dǎo)航
站長專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機
- cPanel
- 網(wǎng)址導(dǎo)航專題
- 云計算
- 微博營銷
- 虛擬主機管理系統(tǒng)
- 開放平臺
- WIKI程序與應(yīng)用
- 美國十大主機
PHP概述:修訂間差異
無編輯摘要 ? |
Ahbaybface(討論 | 貢獻) 無編輯摘要 ? |
||
第104行: | 第104行: | ||
鼓勵參與:開發(fā)團隊不限于某個組織。任何感興趣的人,只要具有相應(yīng)的能力,都可以自由地加入到項目中。由于不對成員進行限制,這就大大增加了項目的人才儲備,必然能貢獻出更高質(zhì)量的產(chǎn)品。<br> | 鼓勵參與:開發(fā)團隊不限于某個組織。任何感興趣的人,只要具有相應(yīng)的能力,都可以自由地加入到項目中。由于不對成員進行限制,這就大大增加了項目的人才儲備,必然能貢獻出更高質(zhì)量的產(chǎn)品。<br> | ||
[[category: | ? | ||
[[category:PHP教程]] |
2009年12月10日 (四) 16:43的最新版本
導(dǎo)航: 上一頁 | ASP | PHP | JSP | HTML | CSS | XHTML | aJAX | Ruby | JAVA | XML | Python | ColdFusion
歷史[ ]
最初的 PHP 要追溯到 1995 年,當時一個名叫Rasmus Lerdorf 的獨立軟件開發(fā)承包人開發(fā)了一個Perl/CGI 腳本,可以讓他了解有多少訪問者閱讀了他的在線簡歷。他的腳本執(zhí)行兩項任務(wù):將訪問者信息記入日志,顯示網(wǎng)頁訪問者的數(shù)量。Web 雖然現(xiàn)在已經(jīng)家喻戶曉,但在當時卻很年輕,所以類似的工具以前從未有過,于是人們向 Lerdorf 發(fā)送電子郵件咨詢他的這個腳本。自此 Lerdorf 開始分發(fā)他的工具集,并稱之為個人主頁(PHP)。
由于對 PHP 工具集的呼聲很高,這促使 Lerdorf 繼續(xù)開發(fā)這種語言。他增加了一個能把在 HTML表單中輸入的數(shù)據(jù)轉(zhuǎn)換為符號變量的功能,從而允許導(dǎo)出到其他系統(tǒng),這或許算得上是早期最突出的一次改進。為此,他選擇用C 而不是 Perl 代碼來進行后續(xù)的開發(fā)。對 PHP 工具集的不斷增補在 1997年 11 月達到了頂峰,這時發(fā)行了 PHP 2.0,即“個人主頁——表單解釋器”( PHPFI)。由于 PHP 不斷普及,所以 2.0 版本得到了來自全世界程序員的大量改進和提高。這個新 PHP 版本非常流行,很 快就有一個核心開發(fā)團隊加入到 Lerdorf。他 們保持了原先在 HTML中直接加入代碼的概念,重新編寫了解析引擎,這就誕生了 PHP 3.0。到 1998 年 6 月發(fā)行版本 3.0 為止,已經(jīng)有超過 5 萬個用戶在使用 PHP 改進其網(wǎng)頁。
注解
1997年還出現(xiàn)了一個變化,PHP的含義由Personal Home Page(個人主頁)變成了HypertextPreprocessor(超文本預(yù)處理器)的縮寫詞。接下來的兩年中,開發(fā)繼續(xù)狂熱地進行著,又增加了成百上千項功能,用戶數(shù)量也在飛速增長。
在 1999 年初,Netcraft(http://www.netcraft.com/)公布了一個保守的估計,稱用戶數(shù)已經(jīng)超過了 100 萬,這說明 PHP 已經(jīng)成為了世界上最流行的腳本語言之一。它 的廣泛流傳甚至超出了開發(fā)人員最樂觀的期望,并且很快用戶們準備用 PHP 開發(fā)功能更強大的應(yīng)用程序。兩位核心開發(fā)人員(ZeevSuraski 和 Andi Gutmans)開始主動地徹底重新考慮 PHP 的工作方式,最終改寫了 PHP 的解析器,稱之為 Zend 腳本引擎。這些工作的最終成果就是 PHP 4 的發(fā)布。
PHP 4[ ]
2000 年5 月22 日,第一次正式宣布再次開發(fā)之后的大約18 個月,發(fā)布了PHP 4.0。許多人都認為PHP 4的發(fā)布是這種語言在企業(yè)級開發(fā)環(huán)境下的正式亮相,這 個觀點也由于PHP的迅速普及得到了佐證。僅僅在發(fā)布后的幾個月內(nèi),Netcraft(http://www.netcraft.com/)估計就有超過 360 萬個域安裝了PHP。
特性[ ]
PHP 4 包括了以下幾項企業(yè)級的改進:
改進了資源處理:
可 擴展性是版本 3.X 的主要缺點之一。這 主要是因為設(shè)計者低估了這種語言,沒考慮到它會大量用于大規(guī)模應(yīng)用程序。最初并沒有打算用這種語言開發(fā)企業(yè)級網(wǎng)站,但后來確實有這樣的嘗試,這就使得開發(fā)人員開始重新考慮這種語言的機制。最終促使在版本 4中對資源處理進行了大幅改進。
面向?qū)ο蟮闹С郑?br />
版本 4 在一定程度上結(jié)合了面向?qū)ο蟮墓δ?,盡管一般認為這只是一個很平常的實現(xiàn)。不過,對于使用傳統(tǒng)面向?qū)ο蟪绦蛟O(shè)計(OOP)語言的用戶來說,這個新特性在吸引這些用戶方面起到了非常重要的作用。除了對象重載和運行時類信息,PHP 還支持標準的類和對象開發(fā)方法。版本 5 支持更復(fù)雜的 OOP 實現(xiàn),第 5 章將介紹這方面的內(nèi)容。
內(nèi)置 的會話處理支持 :
版本 3.X 通過第三方包 PHPLIB(http://phplib.sourceforge.net)來支持 HTTP 會話處理,在 版本 4 中 HTTP 會話處理則是內(nèi)置的功能。這個特性使得開發(fā)人員可以相當高效輕松地跟蹤用戶活動和偏好。第 15章將介紹 PHP 的會話處理功能。
加密:
MCrypt(http://mcrypt.sourceforge.net)庫引入到默認發(fā)行包中,為用戶提供了完全加密和散列加密,使用的加密算法包括 Blowfish、MD5、SHA1 和三重 DES 等。第18 章將討論 PHP 的加密功能。
ISAPI 支持:
對 ISAPI 的支持使用戶能夠?qū)?PHP 與微軟的 IIS Web 服務(wù)器(作為一個 ISAPI模塊)結(jié)合使用,大大提高了性能和安全性。
內(nèi)置 COM/DCOM 支持:
對 Windows 用戶來說,另 一個好處是 PHP 4 能夠訪問和實例化 COM對象。這項功能擴展了與 Windows 應(yīng)用程序的互操作性。
內(nèi)置 Java 支持:
這也是 PHP 在互操作性方面的一大進步,版本 4.0 支持 PHP 應(yīng)用程序綁定Java 對象。
與 Perl 兼容的正則表達式(PCRE)庫:
Perl 語言一直以來在字符串解析領(lǐng)域雄霸天下,占據(jù)著統(tǒng)治地位。開發(fā)人員知道,如果想讓 PHP 得到廣泛認可,強大的正則表達式功能會起到重要作用。他們的做法只是集成 Perl 的功能,而不是重新開發(fā),并將 PCRE 庫的包集成在 PHP的默認發(fā)行包中(版本 4.2.0)。第 9 章將詳細介紹這個重要的特性,并介紹經(jīng)常引起混淆的正則表達式語法。
除了這些特性外,版本 4 還添加了幾百項功能,大大提升了這種語言的能力。本書中,我們將討論其中大部分功能,因為這些功能在版本 5 中仍然很重要。
缺點[ ]
在 PHP 語言的發(fā)展歷程上,PHP 4 代表著一次巨大的飛躍。這個新版本帶來的新功能、強大能力和可擴展性對開發(fā)新手和老手都產(chǎn)生了不小的震動,這 也使 PHP 在 Web 腳本領(lǐng)域確立了牢固的地位。但是,要想讓用戶對哪種語言矢志不渝是很困難的事情;程序員通常會有這樣一種想法“你最近為我做了什么”。PHP 開發(fā)團隊牢記這一點,因為不久以后他們就開始著手開展另一個里程碑性的任務(wù),要在Web 腳本領(lǐng)域推出一個重量級語言(就像一個800 磅的大猩猩):PHP 5
PHP5[ ]
版本 5 是 PHP 語言發(fā)展歷程中的另一座分水嶺。雖然前面的主要版本已經(jīng)增加了許多庫,版本 5則在現(xiàn)有的功能上又進行了許多改進,并且增加了成熟的編程語言體系結(jié)構(gòu)才有的一些特性:
極大地提高了面向?qū)ο竽芰Γ?br />
PHP 的面向?qū)ο篌w系結(jié)構(gòu)得到了改進,這是版本5 最突出的特點。版本 5 增加了很多功能,如顯式構(gòu)造函數(shù)和析構(gòu)函數(shù)、對象克隆、類抽象、變量作用域和接口等。另外,PHP 在處理對象管理方面也有重大改進。
try/catch 異常處理:
具有諷刺意味的是,在結(jié)構(gòu)化編程語言中設(shè)計錯誤處理策略時,不僅非常容易出錯,而且很難保持一致。為了解決這個問題,版本5 開始支持異常處理。在許多語言中,如C++、C#Python 和Java 等,異常處理長期以來一直都是錯誤管理方面的中流砥柱,它為建立標準化的錯誤報告邏輯提供了一種絕佳的方法。這種方便的新方法將在第8 章中介紹。
改進的字符串處理:
之前版本的 PHP 默認地將字符串看作數(shù)組,這也反映了 PHP 原先的數(shù)據(jù)類型觀點不夠嚴密。這種策略在版本 5 中有所調(diào)整,引入了一種專門的字符串偏移量(offset)語法,而以前的方法已經(jīng)廢棄不用。第9 章將討論這種新語法帶來的新特性、變化和效果。
改進的XML 和Web 服務(wù)支持:
現(xiàn)在的 XML 支持建立在 libxml2 庫基礎(chǔ)上,還引入一個很新但非常有前途的擴展包來解析和處理 XML:SimpleXML。此外,PHP 5 還支持 SOAP 擴展。第 20 章將介紹這兩個新擴展,并介紹一些很棒的第三方Web 服務(wù)擴展。
對 SQLite 的內(nèi)置支持:
開 發(fā)人員的腳步一直沒有停止,還 為功能強大但很簡潔的 SQLite 數(shù)據(jù)庫服務(wù)器(http://www.sqlite.org/)提供了支持。如果開發(fā)人員需要一些重量級數(shù)據(jù)庫產(chǎn)品中才有的特性,同時不希望帶來相應(yīng)的管理開銷,SQLite 就能為這些開發(fā)人員提供一個方便的解決方案。第22 章將介紹 PHP 為這個強大的數(shù)據(jù)庫引擎提供的支持。
實用性[ ]
自始以來,PHP 就是以實用性為目的而創(chuàng)建的。畢竟,Lerdorf 最初的意圖不是設(shè)計一門全新的語言,而只是為了解決一個沒有現(xiàn)成解決方案的問題。此外,PHP 早期的發(fā)展并非明確地希望改進語言本身,而只是要為用戶增加功能。其結(jié)果就是建立了一個最低需求(minimalist)語言,不僅對用戶的需求很低,對語言的語法需求也很低。對于剛?cè)腴T的人來說,一個有用的 PHP 腳本可能只包含一行代碼;與 C 不同,它不需要導(dǎo)入庫函數(shù)。
PHP 語言很強調(diào)緊湊性,這還反映在它能嵌套函數(shù)。例如,通過在一行代碼中按特定的順序調(diào)用函數(shù),可以對一個值進行一系列修改。
PHP 是一種類型松散的語言,這意味著不需要明確地創(chuàng)建變量、指派類型或撤銷變量,當然也沒有絕對禁止做這些操作。PHP 在內(nèi)部處理這些情況,腳本中使用變量時 PHP 會動態(tài)創(chuàng)建變量,并使用最優(yōu)推測規(guī)則自動指派變量的類型。
PHP 還會在腳本結(jié)束時自動撤銷變量,將資源返回給系統(tǒng)。從這些方面來看,由于 PHP 在內(nèi)部處理了編程的許多管理方面的問題,這就允許開發(fā)人員集中精力去完成最終的目標,也就是開發(fā)一個實用的應(yīng)用程序。
強大功能[ ]
在前面介紹 PHP 5 時就已經(jīng)提到,這個新版本相對于以前的版本更重視質(zhì)量,而非數(shù)量。以前的主要版本向 PHP 的默認庫增加很多特性,每次發(fā)行新版本都會增加幾百項新功能。目前,PHP 有 113個可用的庫,總共有 1000 余項功能。也許,你知道 PHP 能訪問數(shù)據(jù)庫、處理表單信息以及動態(tài)創(chuàng)建頁面,但你可能不知道 PHP 還有以下功能:
創(chuàng)建并處理Macromedia Flash、圖片和 PDF 文件。
將密碼與字典數(shù)據(jù)和容易破解的模式進行比較,評估密碼的可猜測性。
與輕量級目錄訪問協(xié)議(LDAP)通信。
使用基于 POSIX 和 Perl 的正則表達式庫解析最復(fù)雜的字符串。
通過存儲在純文本文件、數(shù)據(jù)庫或Microsoft 活動目錄中的登錄憑證來鑒別用戶身份。
與多種協(xié)議通信,包括 IMAP、POP3、NNTP 和 DNS 等。
與大量信用卡處理解決方案通信。
當然,后面的章節(jié)將盡可能地涵蓋 PHP 的各項有趣而且有用的特性。
可選擇性[ ]
PHP 開發(fā)人員很少只局限于一種實現(xiàn)方案。相反,這個語言為用戶提供了充分的選擇。例如,考慮一下 PHP 對數(shù)據(jù)庫的支持。P HP 為不少于 25 種數(shù)據(jù)庫產(chǎn)品提供了內(nèi)置支持,包 括 Adabas D、d Base、Empress、F ilePro、F rontBase、H yperwave、IB M DB2、In formix、In gres、In terbase、m SQL、d irect MSSQL、MySQL、Oracle、Ovrimos、PostgreSQL、Solid、Sybase、UNIX dbm 和 Velocis。此外,也可以利用抽象層功能來訪問 Berkeley DB 類型的數(shù)據(jù)庫。最后,還有兩個數(shù)據(jù)庫抽象層可用,一個稱為 dbx 模塊,
另一個是通過 PEAR 的 PEAR DB。
PHP 強大的字符串解析功能也為用戶提供了豐富的可選擇性。除了超過 85 個字符串處理函數(shù)之外,PHP 還支持基于 POSIX 和 Perl 的正則表達式格式。這種靈活性使不同水平的用戶都能獲益,不僅能夠(利用字符串處理函數(shù))立即開始完成復(fù)雜的字符串操作,還可以(利用正則表達式)將有類似功能的程序(如 Perl 和 Python)快速移植到 PHP。
你更喜歡函數(shù)式編程語言嗎?還是采用面向?qū)ο蠓缎停╫bjectorientedparadigm)的語言?PHP 對二者都提供了全面的支持。雖 然 PHP 最初只是一種函數(shù)式語言,但 開發(fā)人員很快就意識到提供流行的OOP 范型的重要性,并開始實現(xiàn)一種可擴展的解決方案。這里反復(fù)強調(diào)的重點是,PHP 允許你充分利用目前掌握的技能,只需投入很少的時間就能很快地開始 PHP 開發(fā)。這種策略在整個語言中頻頻出現(xiàn),這里提到的只是其中很少的一部分例子。
成本[ ]
PHP 從一開始就對使用、修改和再分發(fā)沒有任何限制。最近幾年,滿足這種開放許可限制的軟件稱為開源軟件(opensourcesoftware)。開源軟件和因特網(wǎng)就像面包和黃油一樣密不可分。開源項目如 Sendmail、Bind、Linux 和 Apache 都在因特網(wǎng)的發(fā)展方面起到了非常重要的作用。雖然媒體最為追捧的是開源軟件可以自由使用,但它還有另外幾個同樣重要的特點(甚至更重要):
沒有大多數(shù)商業(yè)產(chǎn)品所要求的許可限制:商業(yè)軟件往往有許多許可限制,而開源軟件的用戶沒有這些限制。雖然在許可權(quán)限上存在差異,但一般來講,用戶都能自由地修改和重新分發(fā)開源軟件,還能將開源軟件整合到其他產(chǎn)品中。
開放式開發(fā)和審計過程:雖然也曾有過一些意外事件,但開源軟件在安全方面還是享有很好的聲譽。這種高標準正是開放式開發(fā)和審計過程的結(jié)果。因為任何人都能自由使用源代碼,所以安全漏洞和潛在的問題會很快被發(fā)現(xiàn)并得以修復(fù)。開源倡導(dǎo)者 Eric S. Raymond 很好地總結(jié)了這項優(yōu)點,他說:“ 只要有足夠的眼睛,所有的 bug 都無處遁形?!?br />
鼓勵參與:開發(fā)團隊不限于某個組織。任何感興趣的人,只要具有相應(yīng)的能力,都可以自由地加入到項目中。由于不對成員進行限制,這就大大增加了項目的人才儲備,必然能貢獻出更高質(zhì)量的產(chǎn)品。