什么是 PHP?
PHP 是基于預(yù)處理 HTML 頁面模型的一種腳本語言。當(dāng) Web 服務(wù)器中的 PHP 預(yù)處理器發(fā)現(xiàn)像下面這樣的 PHP 語言標(biāo)記時,將調(diào)用 PHP 引擎來執(zhí)行該代碼:
<?php some code here ?>
任何使用過命令式編程語言的編程人員都會對 PHP 非常熟悉;您會發(fā)現(xiàn)它與 Perl、C 和 Java 在語法上的相似處。嚴(yán)格來講,Java 是一種命令式編程語言,但它也利用了面向?qū)ο蟮慕Y(jié)構(gòu)和概念。PHP 在適宜的時候借鑒了這種結(jié)構(gòu),但它不是一種純粹的 OOP 語言。
在上面對 ASP.NET 的討論中,我提到了 ODBC 驅(qū)動程序,以及在考慮數(shù)據(jù)庫抽象的情況下如何構(gòu)建應(yīng)用程序。在 PHP 中,您也可以使用 ODBC 與數(shù)據(jù)庫對話,因此您已經(jīng)有了一系列支持的數(shù)據(jù)庫可供選擇。也有 MySQL、Oracle 和 Postgres 的原生驅(qū)動程序。此外,如果要使用 Oracle,則有一個特殊的 OCI8 庫將提供對 Oracle 更多訪問功能,從而允許您使用諸如 LOB、BLOB、CLOB 和 BFILE 之類的特性。
這時您可能會問“為什么與數(shù)據(jù)庫相關(guān)的資料庫被稱為 PHP 的特性?”數(shù)據(jù)庫抽象或獨立性是您在設(shè)法構(gòu)建使用多種數(shù)據(jù)庫或需要在數(shù)據(jù)庫間移植(例如,從開發(fā)到投產(chǎn)時的移植)的應(yīng)用程序時所要考慮的一個因素。而這些確實是應(yīng)該關(guān)心和考慮的。
但正如 Tom Kyte 在他的新書 — Effective Oracle by Design (Oracle 出版社) — 中指出的那樣,數(shù)據(jù)庫相關(guān)性將成為您真正的目標(biāo),因為這將使您在該技術(shù)中的投資最大化。如果您對 Oracle 進(jìn)行一般的訪問 — 無論通過 ODBC 或 Perl 的 DBI 庫,那么您將無法使用其他數(shù)據(jù)庫所不具有的特性。此外,優(yōu)化查詢在各個數(shù)據(jù)庫中各不相同。
Zend Technologies 是一家商業(yè)軟件公司,它對 PHP 作出了重大貢獻(xiàn)。它創(chuàng)建了一個稱為 Zend Studio 的商業(yè)開發(fā)環(huán)境,這個環(huán)境包含了一個復(fù)雜的調(diào)試器、一個監(jiān)測器和其他特性。該公司還構(gòu)建了免費的 Zend Optimizer,它與 Zend Encoder 結(jié)合使用來編譯 PHP 代碼,以提升性能。還有其他商業(yè)產(chǎn)品,如 Zend Performance Suite,它可以緩存預(yù)編譯的 PHP 頁面,從而進(jìn)一步顯著提升總體性能。
優(yōu)勢和弱點
到測試版 4 為止,PHP 5 仍然有一些缺點,包括缺少異常和基于事件的錯誤處理例程 — 它們能夠中斷正常的程序流,并將代碼跳轉(zhuǎn)到一個特殊的錯誤處理部分。Java 也提供了用于錯誤處理的異常,而 C++ 通過 try、catch 和 throw 語法提供異常處理。當(dāng)然,您仍然可以在 PHP 中管理錯誤,但其結(jié)構(gòu)不是標(biāo)準(zhǔn)化的,因而使得編程人員必須使用自己的工具來決定執(zhí)行錯誤處理的方式,這將導(dǎo)致更低的一致性并往往導(dǎo)致推倒重來。
另一個弱點是 PHP 的函數(shù)名是不區(qū)分大小寫的。雖然這不是一個嚴(yán)重的缺點,但有些程序員可能會覺得這一特性很討厭。
不過,我的確對 PHP 的對象模型心存疑慮。PHP 不是專門設(shè)計為一種面向?qū)ο蟮恼Z言。這些特性中的一部分是后來添加的 — 盡管注意了保持與 PHP 3 的后向兼容性,因此兩種模型的特性都留有一些。實際上,在 PHP 5 中這些弱點中的許多都得到了解決。請留心關(guān)注。
PHP 在一些領(lǐng)域中缺少什么,它就會在擅長的領(lǐng)域中迅速地彌補(bǔ)什么。價格合理,因此您不需要擔(dān)心許可問題。它也是開放源代碼的,因此整個社區(qū)將密切關(guān)注開發(fā)過程:發(fā)現(xiàn)錯誤并將其修復(fù)。如果有一個特性您不喜歡,那么您可以修改代碼。此外,PHP 可與 Apache 自然結(jié)合:它可以作為一個模塊編譯,或直接編譯成 Apache 二進(jìn)制文件。
但在 Apache 上運行意味著,利用 PHP,您能夠利用您已經(jīng)在任意服務(wù)器投資,這是因為 Apache 能夠運行在 Windows、Linux、Solaris 和各種其他 Unix 平臺上。此外,使用擁有 Apache 的跟蹤記錄的 web 服務(wù)器意味著安全性能夠保持在最高的優(yōu)先級上。最后,PHP 擁有更小的代碼路徑,這意味著更少的分析和執(zhí)行 PHP 頁面服務(wù)器端代碼,這將帶來更高效的內(nèi)存和使用率以及更快的運行。
出處:oracle.com
責(zé)任編輯:bluehearts
上一頁 ASP.NET 與 PHP 正面交鋒 [1] 下一頁 ASP.NET 與 PHP 正面交鋒 [3]
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|