在 PHP 5 中新增了哪些特性?
PHP 5 的第 4 個測試版在 2003 年 12 月底推出,更改日志清楚地顯示已發(fā)現(xiàn)許多錯誤并已將其消除。雖然它仍在進(jìn)行測試,但它的所有新特性和進(jìn)步都確實值得關(guān)注。
PHP 5 的主要新成就在于它的異常處理和一個新對象,這個新對象引入的特性賦予了 PHP 真正的 OOP。異常處理無疑是 PHP 4 中最顯著的缺憾之一,而 PHP 5 對異常處理的引入無疑是一個成熟的標(biāo)志。異常處理意味著您在您的軟件中擁有了根據(jù)語言定義的和標(biāo)準(zhǔn)化的錯誤處理方法。只需使用 try、catch 和 throw 方法,您的 PHP 代碼就變得更加強健和簡潔。
<?php
class blue {
function openFile ($inFile) { if (file_exists ($inFile)) { # code to open the file here } else { throw new Exception ("Cannot open file:$inFile"); } } }
$blueObj = new blue ();
try { $blueObj->openFile ('/home/shull/file.txt');
} catch (Exception $myException) { echo $myException->getMessage ();
# rest of exception handling code here }
# rest of blue methods here
?>
新的對象模型為用 PHP 編寫的程序帶來許多積極的影響。在 PHP 4 中,當(dāng)把將一個對象傳遞給函數(shù)或方法時,是通過值來傳遞的 — 除非您另行顯式告知 PHP。這個過程意味著必須復(fù)制對象的一個副本(內(nèi)存中的所有數(shù)據(jù)結(jié)構(gòu))。這個步驟使用內(nèi)存,使得訪問變慢和擁塞。而在 PHP 5 中,通常通過引用傳遞對象。
PHP 5 中新的面向?qū)ο蟮奶匦裕ò?gòu)造器和析構(gòu)器)值得關(guān)注。與 C++ 和 Java 相同,它們提供了一種標(biāo)準(zhǔn)方法,即通過一個構(gòu)造器方法來創(chuàng)建對象、分配內(nèi)存和執(zhí)行任何必要的設(shè)置,并通過一個析構(gòu)器方法來執(zhí)行清理。
PHP 5 還引入了對類中方法和變量的更精細(xì)控制。在 PHP 4,一切都是公有的:您可以從類外或在繼承類中訪問您類中的變量。在 PHP 5 中,您仍然可以使變量或方法為公有,但您也可以使它們?yōu)樗接,以使得只能在類本身中使用它們。還可以將它們保護(hù)起來,也就是說,可以在類內(nèi)或在子類中查看方法和變量。
此外,PHP 5 引進(jìn)了類型提示或更好的類型檢查。當(dāng)您將一個對象傳遞給一個例程時,PHP 能夠檢查它是否是正確的類型,并在檢查失敗時產(chǎn)生類型不匹配錯誤。 \
由于還有其他特性(如靜態(tài)方法和變量以及抽象類),因此請務(wù)必查看文檔,以獲取詳細(xì)信息。
安全性比較
ASP.NET 官方要求您使用 IIS。不幸的是,IIS 易受攻擊的歷史由來已久,這使得許多管理員不愿意部署它來處理 Web 站點。這些弱點是因為 Microsoft 的缺陷或是因為 IIS 是黑客們攻擊的目標(biāo)無關(guān)緊要:這些系統(tǒng)有被黑或被攻擊的歷史。PHP 也運行在 Apache 上,Apache 快速并且是開放源代碼的,并擁有很好的安全性記錄。此外,正如我提到過的,Apache 可以在許多平臺上運行。
如果您在考慮 ASP.NET,但您想用 Apache 作為 Internet 門戶,那么很幸運您可以有一些選擇。首先,您可以使用 Apache 將請求轉(zhuǎn)發(fā)給在另一臺計算機上內(nèi)部運行的 IIS。然后 Apache 處理靜態(tài)內(nèi)容,并將 aspx 內(nèi)容傳送給 IIS 服務(wù)器(不暴露給 Internet)。
不過,如果您想利用 Apache 承載 ASP.NET,那么提供了一些選項,這些選項 Microsoft 可能支持也可能不支持。作為最后一種選擇,有 Ximian 的 Project Mono,它致力于構(gòu)建一個開放源代碼模塊。請瀏覽 www.go-mono.com,以獲取更多信息。
出處:oracle.com
責(zé)任編輯:bluehearts
上一頁 ASP.NET 與 PHP 正面交鋒 [2] 下一頁 ASP.NET 與 PHP 正面交鋒 [4]
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|