明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線(xiàn)學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

新版PHP將向Java靠攏

[摘要]所謂的“PHP”就是開(kāi)放源碼的Web應(yīng)用開(kāi)發(fā)/運(yùn)行環(huán)境,日前《日經(jīng)Open System》記者就今后PHP開(kāi)發(fā)中心的發(fā)展計(jì)劃等問(wèn)題采訪(fǎng)了該中心成員Zeev Suraski。Zeev Suraski表示,新版PHP中將導(dǎo)入try、catch等語(yǔ)句,從而更接近Java,以便更容易地進(jìn)行大型系統(tǒng)的開(kāi)發(fā)。...

所謂的“PHP”就是開(kāi)放源碼的Web應(yīng)用開(kāi)發(fā)/運(yùn)行環(huán)境,日前《日經(jīng)Open System》記者就今后PHP開(kāi)發(fā)中心的發(fā)展計(jì)劃等問(wèn)題采訪(fǎng)了該中心成員Zeev Suraski。Zeev Suraski表示,新版PHP中將導(dǎo)入try、catch等語(yǔ)句,從而更接近Java,以便更容易地進(jìn)行大型系統(tǒng)的開(kāi)發(fā)。(采訪(fǎng)者:高橋 信賴(lài))

--請(qǐng)您談一下決定開(kāi)發(fā)PHP的起因。

Rasmus Lerdorf于1995年首先公布了PHP。1997年我在制作以色列大學(xué)網(wǎng)頁(yè)及網(wǎng)上商店站點(diǎn)時(shí),使用了當(dāng)時(shí)名為PHP/FI(Personal Home Page/Form Interpreter)的工具,這時(shí)才開(kāi)始接觸到PHP。在使用的過(guò)程中,發(fā)現(xiàn)了一個(gè)很大的bug。由于源碼是公開(kāi)的,所以我對(duì)bug產(chǎn)生的原因進(jìn)行了調(diào)查并做了修改,在調(diào)查中發(fā)現(xiàn)還有很大的改進(jìn)余地。于是就和當(dāng)時(shí)共同做項(xiàng)目的Andi Gutmans一起對(duì)PHP/FI腳本執(zhí)行引擎進(jìn)行了修改。修改后的執(zhí)行引擎交給Lerdorf后,就成了新版PHP3.0的正式執(zhí)行引擎。

通過(guò)改進(jìn)腳本執(zhí)行引擎,我們開(kāi)發(fā)出了速度更高的Zend Engine。Zend這個(gè)名字是Zeev與Andi的組合。嵌入了Zend Engine的PHP就是目前的版本PHP4。原來(lái)的程序是邊讀入邊解釋來(lái)執(zhí)行,后來(lái)改成了每個(gè)執(zhí)行周期解釋一次 ,因此執(zhí)行100個(gè)周期就要進(jìn)行100次同樣的解釋處理。而Zend Engine則是一開(kāi)始就對(duì)整個(gè)文件的腳本進(jìn)行解釋 ,然后再開(kāi)始執(zhí)行。由于大幅削減了解釋過(guò)程,所以執(zhí)行速度得以大幅提高。

PHP4在發(fā)表后2個(gè)月內(nèi)就被下載了26萬(wàn)5000次。據(jù)美國(guó)調(diào)查公司Netcraft統(tǒng)計(jì),目前PHP至少被安裝在600萬(wàn)個(gè)域名服務(wù)器上。

我想PHP受到人們歡迎的最主要原因就是簡(jiǎn)單實(shí)用。曾有人在給我的郵件中表示:“盡管沒(méi)有編程經(jīng)驗(yàn),但我使用PHP僅用3個(gè)小時(shí)就寫(xiě)出了簡(jiǎn)單的程序”。使用Java就達(dá)不到這種程度。此外,PHP是針對(duì)WWW開(kāi)發(fā)的,因此,還可以方便地處理Cookie與表單。

PHP是免費(fèi)的,今后仍將繼續(xù)免費(fèi)發(fā)布,但考慮到商業(yè)成本與支持產(chǎn)品的要求,于1999年設(shè)立了以色列Zend,并開(kāi)發(fā)出高速PHP軟件及綜合開(kāi)發(fā)工具進(jìn)行銷(xiāo)售。

--預(yù)定2002年底發(fā)布的新版PHP5中,準(zhǔn)備擴(kuò)展哪些功能?

將進(jìn)一步改進(jìn)面向?qū)ο蠊δ,使大型系統(tǒng)的開(kāi)發(fā)更加容易。盡管PHP已經(jīng)具有類(lèi)與子類(lèi)等,但PHP5會(huì)更接近Java。將引入了try、catch等Java具有的特殊處理語(yǔ)句結(jié)構(gòu)。

在PHP4中,函數(shù)作為變量使用,即使給出一個(gè)對(duì)象也不會(huì)發(fā)生變化。PHP可以標(biāo)準(zhǔn)賦值,對(duì)象也可以賦值,所以函數(shù)值并非對(duì)象本身,而是一個(gè)拷貝過(guò)來(lái)的值。當(dāng)函數(shù)需要變更為對(duì)象數(shù)值時(shí),就要在作為變量的對(duì)象前加上“&”符號(hào)來(lái)專(zhuān)門(mén)提示。在Java中不需要這樣的提示,而PHP5則采用的是與Java相同的模式。

此外,PHP5還導(dǎo)入了名稱(chēng)空間(Name Space),名稱(chēng)空間確定后,函數(shù)、變量、類(lèi)名的有效范圍均被限制在名稱(chēng)空間內(nèi)。當(dāng)清楚名稱(chēng)范圍后,在使用變數(shù)與函數(shù)名時(shí)就可以忽略重復(fù)的名稱(chēng),這也方便了大型程序的開(kāi)發(fā)。

名為“stream”的新功能也是一項(xiàng)便利的功能。它可以使WWW服務(wù)器與ftp服務(wù)器上的文件與本地文件使用同樣的函數(shù)。也就是說(shuō),fopen(本地文件名)可以像fopen(hppt://主機(jī)名/文件名)一樣使用。壓縮文件可像普通的非壓縮文件一樣處理。而且不用等到PHP5,在以后發(fā)布的PHP4中就將安裝上“stream”。

--有人指出,由于PHP為HTML嵌入型,和Java一樣難以將顯示(Presentation)與邏輯部分分離,難以實(shí)現(xiàn)模塊化。

事實(shí)上,使用PHP完全能夠分離顯示與邏輯部分。PHP有一項(xiàng)調(diào)出Java對(duì)象的功能?梢詫HP作為顯示層、將Java對(duì)象作為邏輯層使用。

另一個(gè)方法就是使用模板庫(kù)Smarty的方法。Smarty是一個(gè)從HTML模板動(dòng)態(tài)生成HTML的工具。即便HTML中完全沒(méi)有寫(xiě)入PHP邏輯,也可以生成符合HTML的PHP運(yùn)行結(jié)果。

盡管如此,也并不是說(shuō)在任何情況下分離顯示與邏輯都是有利的。比如在開(kāi)發(fā)小型系統(tǒng)時(shí),分離后反而變得更復(fù)雜,很難對(duì)整體進(jìn)行把握,最終影響開(kāi)發(fā)效率,這就是缺點(diǎn)所在。

--2002年2月底,PHP曾被發(fā)現(xiàn)存在嚴(yán)重的安全漏洞。

PHP在5年時(shí)間里都沒(méi)有出現(xiàn)過(guò)嚴(yán)重的安全漏洞,但不幸在2月底發(fā)現(xiàn)文件上傳功能存在問(wèn)題。

我們認(rèn)為安全性至關(guān)重要,并對(duì)此采取了2項(xiàng)措施:首先,在接到安全漏洞報(bào)告的30個(gè)小時(shí)內(nèi)制作并公布了補(bǔ)丁。哪種軟件也不能保證絕對(duì)不會(huì)出現(xiàn)安全漏洞。今后如發(fā)現(xiàn)有嚴(yán)重安全漏洞,我們?nèi)詫?huì)傾盡全力、迅速采取補(bǔ)救措施。

其次,我們已經(jīng)開(kāi)始檢查PHP的源碼,展開(kāi)了安全檢查。即使不是自身的安全漏洞,也要對(duì)可能出現(xiàn)問(wèn)題的部分進(jìn)行檢查并進(jìn)行修正。



標(biāo)簽:新版PHP將向Java靠攏