PHP動(dòng)態(tài)網(wǎng)頁(yè)腳本語(yǔ)言
PHP(“PHP: Hypertext Preprocessor”,超文本預(yù)處理器的字母縮寫(xiě))是一種被廣泛應(yīng)用的開(kāi)放源代碼的多用途腳本語(yǔ)言,它可嵌入到 HTML中,尤其適合 web 開(kāi)發(fā)。
PHP 最早由 Rasmus Lerdorf 在1995年發(fā)明,現(xiàn)在PHP實(shí)質(zhì)上的標(biāo)準(zhǔn)由PHP Group和開(kāi)放源代碼社群維護(hù)。PHP 以 PHP License 作為許可協(xié)議,不過(guò)因?yàn)檫@個(gè)協(xié)議限制了PHP名稱(chēng)的使用,所以和開(kāi)放源代碼許可協(xié)議GPL不相容。
PHP 目前被廣泛的應(yīng)用,特別是在服務(wù)器端的網(wǎng)頁(yè)程式開(kāi)發(fā)。一般來(lái)說(shuō) PHP 大多執(zhí)行在網(wǎng)頁(yè)服務(wù)器上,透過(guò)執(zhí)行PHP程式碼來(lái)產(chǎn)生使用者瀏覽的網(wǎng)頁(yè)。PHP 幾乎可以在任何的操作系統(tǒng)上執(zhí)行,而且使用 PHP 完全是免費(fèi)的。根據(jù)2007年4月的統(tǒng)計(jì)資料,PHP 已經(jīng)被安裝在超過(guò)2000萬(wàn)個(gè)網(wǎng)站和100萬(wàn)臺(tái)服務(wù)器上。
PHP 原本的簡(jiǎn)稱(chēng)為 Personal Home Page,是Rasmus Lerdorf 為了要維護(hù)個(gè)人網(wǎng)頁(yè),而用c語(yǔ)言開(kāi)發(fā)的一些CGI工具程式集,來(lái)取代原先使用的 Perl 程式。最初這些工具程式用來(lái)顯示 Rasmus Lerdorf 的個(gè)人履歷,以及統(tǒng)計(jì)網(wǎng)頁(yè)流量。他將這些程式和一些表單直譯器整合起來(lái),稱(chēng)為 PHP/FI。PHP/FI 可以和數(shù)據(jù)庫(kù)連接,產(chǎn)生簡(jiǎn)單的動(dòng)態(tài)網(wǎng)頁(yè)程式。Rasmus Lerdorf 在1995年6月8日將 PHP/FI 公開(kāi)釋出,希望可以透過(guò)社群來(lái)加速程式開(kāi)發(fā)與尋找錯(cuò)誤。這個(gè)釋出的版本命名為 PHP 2,已經(jīng)有今日 PHP 的一些雛型,像是類(lèi)似 Perl 的變量命名方式、表單處理功能、以及嵌入到 HTML 中執(zhí)行的能力。程式語(yǔ)法上也類(lèi)似 Perl,有較多的限制,不過(guò)更簡(jiǎn)單、更有彈性。
在1997年,任職于 Technion IIT 公司的兩個(gè)以色列程式設(shè)計(jì)師:Zeev Suraski 和 Andi Gutmans,重寫(xiě)了 PHP 的剖析器,成為 PHP 3 的基礎(chǔ),而 PHP 也在這個(gè)時(shí)候改稱(chēng)為PHP: Hypertext Preprocessor.。 經(jīng)過(guò)幾個(gè)月測(cè)試,開(kāi)發(fā)團(tuán)隊(duì)在1997年11月釋出了 PHP/FI 2,隨后就開(kāi)始 PHP 3 的開(kāi)放測(cè)試,最后在1998年6月正式釋出 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 釋出后開(kāi)始改寫(xiě) PHP 的核心,這個(gè)在1999年釋出的剖析器稱(chēng)為 Zend Engine,他們也在以色列的 Ramat Gan 成立了 Zend Technologies 來(lái)管理 PHP 的開(kāi)發(fā)。
在2000年5月22日,以Zend Engine 1.0為基礎(chǔ)的PHP 4正式釋出,2004年7月13日則釋出了PHP 5,PHP 5則使用了第二代的Zend Engine。PHP包含了許多新特色,像是強(qiáng)化的面向?qū)ο蠊δ堋⒁隤DO(PHP Data Objects,一個(gè)存取數(shù)據(jù)庫(kù)的延伸函式庫(kù))、以及許多效能上的增強(qiáng)。目前PHP 4已經(jīng)不會(huì)繼續(xù)更新,以鼓勵(lì)用戶(hù)轉(zhuǎn)移到PHP 5。
2008年P(guān)HP 5成為了PHP唯一的有在開(kāi)發(fā)的PHP版本。將來(lái)的PHP 5.3將會(huì)加入Late static binding和一些其他的功能強(qiáng)化。PHP 6 的開(kāi)發(fā)也正在進(jìn)行中,主要的改進(jìn)有移除register_globals、magic quotes和Safe mode的功能。
PHP 7 于2015年12月3號(hào)正式發(fā)布,PHP7 最讓人關(guān)注的無(wú)非是其性能,據(jù)官方說(shuō)明 PHP 7 的性能是 PHP 5.6 的兩倍。
php5與php7之間的區(qū)別:
1、性能提升:PHP7比PHP5.0性能提升了兩倍。
2、以前的許多致命錯(cuò)誤,現(xiàn)在改成拋出異常。
3、PHP 7.0比PHP5.0移除了一些老的不在支持的SAPI(服務(wù)器端應(yīng)用編程端口)和擴(kuò)展。
4、PHP 7.0比PHP5.0新增了空接合操作符。
5、PHP 7.0比PHP5.0新增加了結(jié)合比較運(yùn)算符。
6、PHP 7.0比PHP5.0新增加了函數(shù)的返回類(lèi)型聲明。
7、PHP 7.0比PHP5.0新增加了標(biāo)量類(lèi)型聲明。
8、PHP 7.0比PHP5.0新增加匿名類(lèi)。
9、錯(cuò)誤處理和64位支持
如果您了解錯(cuò)誤和異常之間的區(qū)別,那么您就會(huì)知道在PHP 5中處理致命錯(cuò)誤非常不容易。PHP7簡(jiǎn)化了流程,因?yàn)樗延每梢暂p松處理的異常替換了幾個(gè)主要錯(cuò)誤。這是通過(guò)引入新的引擎異常對(duì)象實(shí)現(xiàn)的。
您可能已經(jīng)知道,PHP 5不支持64位整數(shù)或大文件,但PHP 7中的情況已發(fā)生變化。PHP7具有64位支持,因此您也可以使用本機(jī)64位整數(shù)作為大文件,因此,您可以在64位系統(tǒng)體系結(jié)構(gòu)上完美運(yùn)行應(yīng)用程序。
10、聲明返回類(lèi)型
在PHP 5中,程序員無(wú)法定義函數(shù)或方法的返回類(lèi)型。在現(xiàn)實(shí)生活中,這是一個(gè)巨大的缺點(diǎn),因?yàn)槌绦騿T無(wú)法防止意外的返回類(lèi)型并在其他情況下生成異常。
幸運(yùn)的是,PHP 7允許程序員根據(jù)期望的返回值聲明函數(shù)的返回類(lèi)型。這肯定會(huì)使代碼健壯和準(zhǔn)確。有四種不同的返回類(lèi)型可用-bool,int,string和float。
為什么 PHP7 比 PHP5 性能提升了?
1、變量存儲(chǔ)字節(jié)減小,減少內(nèi)存占用,提升變量操作速度
2、改善數(shù)組結(jié)構(gòu),數(shù)組元素和hash映射表被分配在同一塊內(nèi)存里,降低了內(nèi)存占用、提升了 cpu 緩存命中率
3、改進(jìn)了函數(shù)的調(diào)用機(jī)制,通過(guò)優(yōu)化參數(shù)傳遞的環(huán)節(jié),減少了一些指令,提高執(zhí)行效率
PHP8于2020年11月26日正式發(fā)布,除重大更改外,PHP 8還帶來(lái)了一些不錯(cuò)的新功能,比如說(shuō) JIT編譯器, 聯(lián)合類(lèi)型, 屬性,以及更多。
比較受人關(guān)注的特性有:
1、JIT編譯器
JIT的新特性,則是將PHP代碼轉(zhuǎn)化為傳統(tǒng)的機(jī)器碼,而并非通過(guò)zend虛擬機(jī)來(lái)運(yùn)行,這大大增加了運(yùn)行速度。但是缺點(diǎn)是向下不兼容。
2、注解
PHP8之前PHP實(shí)現(xiàn)注解可以通過(guò)php-parser來(lái)實(shí)現(xiàn),但現(xiàn)在可以直接通過(guò)Reflection 來(lái)獲取。
3、類(lèi)中的成員變量
在PHP8之前,我們一般會(huì)這樣定義一個(gè)類(lèi),首先要設(shè)置成員變量,然后在構(gòu)造或者某一個(gè)方法為它賦值。
4、命名參數(shù)
方法傳參需要默認(rèn)值時(shí)會(huì)更靈活
5、聯(lián)合類(lèi)型
在PHP8中你可以使用多種預(yù)測(cè)類(lèi)型
PHP 的發(fā)明人 Rasmus Lerdorf
[以上內(nèi)容主要來(lái)自維基百科:http://zh.wikipedia.org/w/index.php?title=PHP&variant=zh-cn]
