來源:互聯網
上載者:User
關鍵字
新版
PHP
使用
進行
Java
執行
開發
檔案
對象
所謂的“PHP”就是開放源碼的Web應用開發/運行環境,日前《日經Open System》記者就今後PHP開發中心的發展計劃等問題採訪了該中樞成員Zeev Suraski。Zeev Suraski表示,新版PHP中將匯入try、catch等語句,從而更接近Java,以便更容易地進行大型系統的開發。(採訪者:高橋 信賴)
--請您談一下決定開發PHP的起因。
Rasmus Lerdorf於1995年首先公布了PHP。1997年我在製作以色列大學網頁及網上商店網站時,使用了當時名為PHP/FI(Personal Home Page/Form Interpreter)的工具,這時才開始接觸到PHP。在使用的過程中,發現了一個很大的bug。由於源碼是公開的,所以我對bug產生的原因進行了調查並做了修改,在調查中發現還有很大的改進餘地。於是就和當時共同做項目的Andi Gutmans一起對PHP/FI指令碼執行引擎進行了修改。修改後的執行引擎交給Lerdorf後,就成了新版PHP3.0的正式執行引擎。
通過改進指令碼執行引擎,我們開發出了速度更高的Zend Engine。Zend這個名字是Zeev與Andi的組合。嵌入了Zend Engine的PHP就是目前的版本PHP4。原來的程式是邊讀入邊解釋來執行,後來改成了每個執行循環解釋一次 ,因此執行100個周期就要進行100次同樣的解釋處理。而Zend Engine則是一開始就對整個檔案的指令碼進行解釋 ,然後再開始執行。由於大幅削減瞭解釋過程,所以執行速度得以大幅提高。
PHP4在發表後2個月內就被下載了26萬5000次。據美國調查公司Netcraft統計,目前PHP至少被安裝在600萬個網域名稱伺服器上。
我想PHP受到人們歡迎的最主要原因就是簡單實用。曾有人在給我的郵件中表示:“儘管沒有編程經驗,但我使用PHP僅用3個小時就寫出了簡單的程式”。使用Java就達不到這種程度。此外,PHP是針對WWW開發的,因此,還可以方便地處理Cookie與表單。
PHP是免費的,今後仍將繼續免費發布,但考慮到商業成本與支援產品的要求,於1999年設立了以色列Zend,並開發出高速PHP軟體及綜合開發工具進行銷售。
--預定2002年底發布的新版PHP5中,準備擴充哪些功能?
將進一步改進物件導向功能,使大型系統的開發更加容易。儘管PHP已經具有類與子類等,但PHP5會更接近Java。將引入了try、catch等Java具有的特殊處理語句結構。
在PHP4中,函數作為變數使用,即使給出一個對象也不會發生變化。PHP可以標準賦值,對象也可以賦值,所以函數值並非對象本身,而是一個拷貝過來的值。當函數需要變更為對象數值時,就要在作為變數的對象前加上“&”符號來專門提示。在Java中不需要這樣的提示,而PHP5則採用的是與Java相同的模式。
此外,PHP5還匯入了名稱空間(Name Space),名稱空間確定後,函數、變數、類名的有效範圍均被限制在名稱空間內。當清楚名稱範圍後,在使用變數與函數名時就可以忽略重複的名稱,這也方便了大型程式的開發。
名為“stream”的新功能也是一項便利的功能。它可以使WWW伺服器與ftp伺服器上的檔案與本地檔案使用同樣的函數。也就是說,fopen(本地檔案名稱)可以像fopen(hppt://主機名稱/檔案名稱)一樣使用。壓縮檔可像普通的非壓縮檔一樣處理。而且不用等到PHP5,在以後發布的PHP4中就將安裝上“stream”。
--有人指出,由於PHP為HTML嵌入型,和Java一樣難以將顯示(Presentation)與邏輯部分分離,難以實現模組化。
事實上,使用PHP完全能夠分離顯示與邏輯部分。PHP有一項調出Java對象的功能。可以將PHP作為顯示層、將Java對象作為邏輯層使用。
另一個方法就是使用模板庫Smarty的方法。Smarty是一個從HTML模板動態產生HTML的工具。即便HTML中完全沒有寫入PHP邏輯,也可以產生符合HTML的PHP運行結果。
儘管如此,也並不是說在任何情況下分離顯示與邏輯都是有利的。比如在開發小型系統時,分離後反而變得更複雜,很難對整體進行把握,最終影響開發效率,這就是缺點所在。
--2002年2月底,PHP曾被發現存在嚴重的安全性漏洞。
PHP在5年時間裡都沒有出現過嚴重的安全性漏洞,但不幸在2月底發現檔案上傳功能存在問題。
我們認為安全性至關重要,並對此採取了2項措施:首先,在接到安全性漏洞報告的30個小時內製作並公布了補丁。哪種軟體也不能保證絕對不會出現安全性漏洞。今後如發現有嚴重安全性漏洞,我們仍將會傾盡全力、迅速採取補救措施。
其次,我們已經開始檢查PHP的源碼,展開了安全檢查。即使不是自身的安全性漏洞,也要對可能出現問題的部分進行檢查並進行修正。