|
如今當提到 Web 開發(fā)時,您有許多選擇。這些方法中許多都涉及到預處理 — 即,利用特定的標記將代碼嵌入到 HTML 頁面中,這些標記告訴預處理器,它們包含代碼,并且應對它們作出處理。與 CGI 非常相似,這些代碼在服務器上運行,并返回一些內(nèi)容,這些內(nèi)容表現(xiàn)為發(fā)回給瀏覽器的結果 HTML 頁面的部分外觀。開放源代碼腳本語言 PHP 和 Microsoft 的 ASP.NET 框架中的語言都屬于這種類型;JavaServer Pages (JSP) 和 Perl/Mason 也以這種方式運行。 在本文中,我將重點講述 PHP — Oracle 已選擇合并到其產(chǎn)品中的技術 — 和 ASP.NET。我將概述兩者的各種優(yōu)勢和弱點,并著重討論那些將幫助您決定開發(fā)項目應選擇哪種技術的因素。有很多因素需要考慮,不同的項目可能訴諸于不同的技術??傊鷮⒖吹皆趦r格、速度和效率、安全性、跨平臺支持等方面的逐項比較,以及開放源代碼解決方案的優(yōu)勢。 什么是 ASP.NET, ASP 最新的版本 ASP.NET 并不完全與 ASP 早期的版本后向兼容,因為該軟件進行了完全重寫。早期的 ASP 技術實際上與 PHP 的共同之處比與 ASP.NET 的共同之處多得多,ASP.NET 是用于構建 Web 應用程序的一個完整的框架。這個模型的主要特性之一是選擇編程語言的靈活性。ASP.NET 可以使用腳本語言(如 VBScript、JScript、Perlscript 和 Python)以及編譯語言(如 VB、C#、C、Cobol、Smalltalk 和 Lisp)。新框架使用通用語言運行環(huán)境 (CLR);先將您語言的源代碼編譯成 Microsoft 中間語言代碼,然后 CLR 執(zhí)行這些代碼。 這個框架還提供真正的面向對象編程 (OOP),并支持真正的繼承、多態(tài)和封裝。.NET 類庫根據(jù)特定的任務(例如,使用 XML 或圖像處理)組織成可繼承的類。 除了編程語言和方法之外,數(shù)據(jù)庫訪問也是要著重關心的一個因素。當您用 ASP.NET 編程時,可以用 ODBC 來集成數(shù)據(jù)庫;ODBC 提供了一組一致的調用函數(shù)來訪問您的目標數(shù)據(jù)庫。 優(yōu)勢和弱點 ASP.NET 的優(yōu)勢很明顯在于它簡潔的設計和實施。這是面向對象的編程人員的夢想:語言靈活,并支持復雜的面向對象特性。在這種意義下,它真正能夠與編程人員現(xiàn)有的技能進行互操作。 ASP.NET 的另一個優(yōu)勢是其開發(fā)環(huán)境。例如,開發(fā)人員可以使用 WebMatrix(一個社區(qū)支持的工具)、Visual Studio .NET 或各種 Borland 工具(如 Delphi 和 C++ Builder)。例如,Visual Studio 允許設置斷點、跟蹤代碼段和查看調用堆棧??偠灾且粋€復雜的調試環(huán)境。許多其他第三方的 ASP.NET IDE 解決方案也將必然出現(xiàn)。 但您得到了強健性,就將以損失效率為代價。ASP.NET 在內(nèi)存使用和執(zhí)行時間方面耗費非常大,這大部分歸因于較長的代碼路徑。對基于 Web 的應用程序,這些局限可能是一個嚴重的問題,因為在 Web 上,您的應用程序可能擴展為每秒成千上萬的用戶。內(nèi)存使用率還可能成為 Web 服務器上的一個問題。 什么是 PHP, PHP 是基于預處理 HTML 頁面模型的一種腳本語言。當 Web 服務器中的 PHP 預處理器發(fā)現(xiàn)像下面這樣的 PHP 語言標記時,將調用 PHP 引擎來執(zhí)行該代碼: <?php some code here ?> 任何使用過命令式編程語言的編程人員都會對 PHP 非常熟悉;您會發(fā)現(xiàn)它與 Perl、C 和 Java 在語法上的相似處。嚴格來講,Java 是一種命令式編程語言,但它也利用了面向對象的結構和概念。PHP 在適宜的時候借鑒了這種結構,但它不是一種純粹的 OOP 語言。 在上面對 ASP.NET 的討論中,我提到了 ODBC 驅動程序,以及在考慮數(shù)據(jù)庫抽象的情況下如何構建應用程序。在 PHP 中,您也可以使用 ODBC 與數(shù)據(jù)庫對話,因此您已經(jīng)有了一系列支持的數(shù)據(jù)庫可供選擇。也有 MySQL、Oracle 和 Postgres 的原生驅動程序。此外,如果要使用 Oracle,則有一個特殊的 OCI8 庫將提供對 Oracle 更多訪問功能,從而允許您使用諸如 LOB、BLOB、CLOB 和 BFILE 之類的特性。 這時您可能會問“為什么與數(shù)據(jù)庫相關的資料庫被稱為 PHP 的特性,”數(shù)據(jù)庫抽象或獨立性是您在設法構建使用多種數(shù)據(jù)庫或需要在數(shù)據(jù)庫間移植(例如,從開發(fā)到投產(chǎn)時的移植)的應用程序時所要考慮的一個因素。而這些確實是應該關心和考慮的。 Effective Oracle by Design (Oracle 出版社) — 中但正如 Tom Kyte 在他的新書 —指出的那樣,數(shù)據(jù)庫相關性將成為您真正的目標,因為這將使您在該技術中的投資最大化。如果您對 Oracle 進行一般的訪問 — 無論通過 ODBC 或 Perl 的 DBI 庫,那么您將無法使用其他數(shù)據(jù)庫所不具有的特性。此外,優(yōu)化查詢在各個數(shù)據(jù)庫中各不相同。 Zend Technologies 是一家商業(yè)軟件公司,它對 PHP 作出了重大貢獻。它創(chuàng)建了一個稱為 Zend Studio 的商業(yè)開發(fā)環(huán)境,這個環(huán)境包含了一個復雜的調試器、一個監(jiān)測器和其他特性。該公司還構建了免費的 Zend Optimizer,它與 Zend Encoder 結合使用來編譯 PHP 代碼,以提升性能。還有其他商業(yè)產(chǎn)品,如 Zend Performance Suite,它可以緩存預編譯的 PHP 頁面,從而進一步顯著提升總體性能。 優(yōu)勢和弱點 到測試版 4 為止,PHP 5 仍然有一些缺點,包括缺少異常和基于事件的錯誤處理例程 — 它們能夠中斷正常的程序流,并將代碼跳轉到一個特殊的錯誤處理部分。Java 也提供了用于錯誤處理的異常,而 C++ 通過 try、catch 和 throw 語法提供異常處理。當然,您仍 然可以在 PHP 中管理錯誤,但其結構不是標準化的,因而使得編程人員必須使用自己的工具來決定執(zhí)行錯誤處理的方式,這將導致更低的一致性并往往導致推倒重來。 另一個弱點是 PHP 的函數(shù)名是不區(qū)分大小寫的。雖然這不是一個嚴重的缺點,但有些程序員可能會覺得這一特性很討厭。 不過,我的確對 PHP 的對象模型心存疑慮。PHP 不是專門設計為一種面向對象的語言。這些特性中的一部分是后來添加的 — 盡管注意了保持與 PHP 3 的后向兼容性,因此兩種模型的特性都留有一些。實際上,在 PHP 5 中這些弱點中的許多都得到了解決。請留心關注。 PHP 在一些領域中缺少什么,它就會在擅長的領域中迅速地彌補什么。價格合理,因此您不需要擔心許可問題。它也是開放源代碼的,因此整個社區(qū)將密切關注開發(fā)過程:發(fā)現(xiàn)錯誤并將其修復。如果有一個特性您不喜歡,那么您可以修改代碼。此外,PHP 可與 Apache 自然結合:它可以作為一個模塊編譯,或直接編譯成 Apache 二進制文件。 但在 Apache 上運行意味著,利用 PHP,您能夠利用您已經(jīng)在任意服務器投資,這是因為 Apache 能夠運行在 Windows、Linux、Solaris 和各種其他 Unix 平臺上。此外,使用擁有 Apache 的跟蹤記錄的 web 服務器意味著安全性能夠保持在最高的優(yōu)先級上。最后,PHP 擁有更小的代碼路徑,這意味著更少的分析和執(zhí)行 PHP 頁面服務器端代碼,這將帶來更高效的內(nèi)存和使用率以及更快的運行。 在 PHP 5 中新增了哪些特性, PHP 5 的第 4 個測試版在 2003 年 12 月底推出,更改日志清楚地顯示已發(fā)現(xiàn)許多錯誤并已將其消除。雖然它仍在進行測試,但它的所有新特性和進步都確實值得關注。 PHP 5 的主要新成就在于它的異常處理和一個新對象,這個新對象引入的特性賦予了 PHP 真正的 OOP。異常處理無疑是 PHP 4 中最顯著的缺憾之一,而 PHP 5 對異常處理的引入無疑是一個成熟的標志。異常處理意味著您在您的軟件中擁有了根據(jù)語言定義的和標準化的錯誤處理方法。只需使用 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 中,當把將一個對象傳遞給函數(shù)或方法時,是通過值來傳遞的 — 除非您另行顯式告知 PHP。這個過程意味著必須復制對象的一個副本(內(nèi)存中的所有數(shù)據(jù)結構)。這個步驟使用內(nèi)存,使得訪問變慢和擁塞。而在 PHP 5 中,通常通過引用傳遞對象。 PHP 5 中新的面向對象的特性(包括構造器和析構器)值得關注。與 C++ 和 Java 相同,它們提供了一種標準方法,即通過一個構造器方法來創(chuàng)建對象、分配內(nèi)存和執(zhí)行任何必要的設置,并通過一個析構器方法來執(zhí)行清理。 PHP 5 還引入了對類中方法和變量的更精細控制。在 PHP 4,一切都是公有的:您可以從類外或在繼承類中訪問您類中的變量。在 PHP 5 中,您仍然可以使變量或方法為公有,但您也可以使它們?yōu)樗接?,以使得只能在類本身中使用它們。還可以將它們保護起來,也就是說,可以在類內(nèi)或在子類中查看方法和變量。 此外,PHP 5 引進了類型提示或更好的類型檢查。當您將一個對象傳遞給一個例程時,PHP 能夠檢查它是否是正確的類型,并在檢查失敗時產(chǎn)生類型不匹配錯誤。 由于還有其他特性(如靜態(tài)方法和變量以及抽象類),因此請務必查看文檔,以獲取詳細信息。 安全性比較 ASP.NET 官方要求您使用 IIS。不幸的是,IIS 易受攻擊的歷史由來已久,這使得許多管理員不愿意部署它來處理 Web 站點。這些弱點是因為 Microsoft 的缺陷或是因為 IIS 是黑客們攻擊的目標無關緊要:這些系統(tǒng)有被黑或被攻擊的歷史。PHP 也運行在 Apache 上,Apache 快速并且是開放源代碼的,并擁有很好的安全性記錄。此外,正如我提到過的,Apache 可以在許多平臺上運行。 如果您在考慮 ASP.NET,但您想用 Apache 作為 Internet 門戶,那么很幸運您可以有一些選擇。首先,您可以使用 Apache 將請求轉發(fā)給在另一臺計算機上內(nèi)部運行的 IIS。然后 Apache 處理靜態(tài)內(nèi)容,并將 aspx 內(nèi)容傳送給 IIS 服務器(不暴露給 Internet)。 不過,如果您想利用 Apache 承載 ASP.NET,那么提供了一些選項,這些選項 Microsoft 可能支持也可能不支持。作為最后一種選擇,有 Ximian 的 Project Mono,它致力于構建一個開放源代碼模塊。請瀏覽 www.go-mono.com,以獲取更多信息。 數(shù)據(jù)庫編碼示例 您在選用 PHP 或 ASP.NET 時首先要考慮因素之一就是與數(shù)據(jù)庫的連接。不過,利用 ASP.NET 更復雜,因為您可以從許多備選語言中選擇任意一種語言。當然,這些代碼示例將必須嵌入到 HTML 頁面、實例化的類等之中。不過,以下信息將使您對二者的編碼風格有所了解。 PHP 5 與 Oracle 連接 下面是一個 PHP 5 類,它提供了一個 Oracle 連接和斷開例程,用以演示利用 PHP 5(也可以使用其他驅動程序(如 ODBC 驅動程序)和通用的數(shù)據(jù)庫接口)與 Oracle 連接的一種方式: class oracle_object { protected $theDB; protected $user; protected $pass; protected $db; function __construct($u, $p, $d) { $this->user = $u; $this->pass = $p; $this->db = $d; } function db_open () { $theDB = @OCILogon($this->user, $this->pass, $this->db); db_check_errors($php_errormsg); } function db_close() { @OCILogoff($theDB); db_check_errors($php_errormsg); } function __destruct () { print ("so long..."); } } ASP.NET 與 Oracle 連接 如果您希望利用 VB.NET(Visual Basic 是 Microsoft 的默認 .NET 編程語言)與 Oracle 連接,那么請看一下這個來自 MSDN 的示例: Imports System Imports System.Data Imports System.Data.OracleClient Imports Microsoft.VisualBasic Class Sample Public Shared Sub Main() Dim oraConn As OracleConnection = New OracleConnection ("Data Source=MyOracleServer;Integrated Security=yes;") Dim oraCMD As OracleCommand = New OracleCommand ("SELECT CUSTOMER_ID, NAME FROM DEMO.CUSTOMER", oraConn) oraConn.Open() Dim myReader As OracleDataReader = oraCMD.ExecuteReader() Do While (myReader.Read()) Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", myReader.GetInt32(0), myReader.GetString(1)) Loop myReader.Close() oraConn.Close() End Sub End Class 作出選擇 假定您還沒有決定選用 PHP,我可以斷言 PHP 的優(yōu)勢遠遠超過它的弱點。(請參見表 1 中的概要。)這些優(yōu)勢歸結為價格、速度和效率、安全性、跨平臺適用性和開放源代碼機遇。它惟一的弱點是缺少一種純粹和完美的 OOP 實現(xiàn),不過,這是一個很小的缺點。雖然語言結構的確有幫助,但好的編碼最終是由實踐、執(zhí)行、好的習慣和規(guī)范帶來的。 PHP與ASP.NET的比較 表 1 PHP 4 PHP5 ASP.NET 軟件價格 免費 免費 免費 $$ 平臺價格 免費 免費 速度 強 強 弱 效率 強 強 弱 安全性 強 強 強 平臺 強 強 弱(僅用于IIS) 平臺 任意 任意 win32(僅用于IIS) 是否提供源是 是 否 代碼 異常 否 是 是 OOP 弱 強 強 價格 在此,我們不應簡單地考慮初始投資 — 對 PHP 而言,這很明顯是免費的 — 還應考慮實施、維護和調試的成本。對 PHP 而言,您可能需要購買 Zend 優(yōu)化引擎。然而,使用 ASP,您將從一開始就進行投資,而且您還要為附加的技術 — 例如,執(zhí)行圖形處理的庫 — 支付費用。但從長遠來看,PHP 將不會逼迫您升級并向您收取更多的許可費用。接觸過復雜許可的每一個人都知道,很多公司花費大量的時間和金錢僅是為了確保其順應性。此外,當在獲得錯誤修復的時間上,您得到的反應也有所不同。這當然將轉化成時間,時間又將轉化成總體開發(fā)的成本。 速度和效率 正如我先前提到的,ASP.NET 是一個允許您使用各種編程語言的框架。此外,它據(jù)稱擁有一個極好的面向對象模型。盡管所有這些都是真的,但在考慮到速度時,它卻是不利的?;谝陨显?,在 ASP.NET 中運行 ASP 頁面與在 PHP 引擎中運行等效的 PHP 頁面相比需要執(zhí)行更多代碼。PHP 是一種“快速粗糙”的解決方案,是為完成工作而設計的解決方案。雖然自 2.0 和 3.0 版本以來為其增強了許多強健性,但它仍然保留著核心的優(yōu)化的高速方法。 速度不是惟一要考慮的因素。內(nèi)存使用率也很重要。 安全性 ASP.NET 運行在 IIS 上,而 IIS 已被攻擊了無數(shù)次 — 正如每隔一周的 IT 新聞報告所證實的。它已經(jīng)成為這樣一種負擔,實際上,盡管其耗巨資進行銷售宣傳,但許多 IT 專業(yè)人員仍然拒絕用 IIS Web 服務器來開放他們的網(wǎng)絡。而 PHP 使用 Apache。Apache 擁有已被證明的速度、可靠性和穩(wěn)固的安全性的記錄。請瀏覽 www.securityfocus.com,以獲取更多信息。 跨平臺適用性 ASP.NET 在 IIS 上運行,并且開始在 Apache 上運行(Apache 能夠在許多平臺上運行)。PHP 從一開始就設計用于和 Apache 一起工作,因此您擁有許多可供選擇的已被證明和可靠的服務器平臺。 開放源代碼機遇 開放源代碼并不只靠一些異想天開的編程人員或想要節(jié)省一些許可費用的公司來開展。當您處理軟件本身的錯誤時,開放源代碼可能成為真正的天賜之物。 在使用 PHP 或 ASP.NET 的情況下,您都會有一個大的用戶群,他們使用軟件并且可能遇到錯誤。使用 ASP.NET,這些錯誤必須通過一個官方程序來通知、修復、測試,并在一個新的補丁或版本中消除。然而,PHP 補丁可以快速地得到修補并發(fā)布。目睹開放源代碼發(fā)展的任何人都知道,新的版本和補丁通常在幾天內(nèi)而不是像商業(yè)軟件一樣在幾個星期或幾個月內(nèi)推出。如果這不夠快,那么您通常可以自己來修補問題(如果必要的話)。 PHP在WEB開發(fā)領域的優(yōu)勢 你當前的位置:嘟妖老 --> 技術文檔全集 在多數(shù)WEB開發(fā)者眼中,ASP和JSP都被認為是領跑者,而PHP卻被認為是個弱小的“掙扎者”,或者說它是一門被貶低為業(yè)余者才使用的語言,不值得參與企業(yè)WEB開發(fā)的競爭。在我看來,PHP沒有被當作競爭者的理由是評論者缺乏對它的了解,而且也不了解用于WEB開發(fā)的其他操作系統(tǒng)。和一些觀點相反,WINDOWS不再占有WEB虛擬主機服務市場的最大份額,我猜想它在WEB開發(fā)這一領域里也在被摧城拔寨。 在企業(yè)開發(fā)里為什么沒有PHP, 很顯然,PHP被認為落后ASP和JSP太多,以至于它是沒有什么用的,但是這恰恰與事實不符。PHP本身就是一門強大的語言。它事實上在每個發(fā)行版的LINUX上都有,在MAC OS X上也有。獲取開發(fā)和使用PHP代碼的構件(BUILDING-BLOCK)工具和軟件都是免費的。用于開發(fā)PHP應用程序的商業(yè)集成開發(fā)環(huán)境(COMMERCIAL INTEGRATED DEVELOPMENT ENVIRONMENTS,IDES)也可以找到這樣的工具有KOMODO(它運行在LINUX和WINDOWS上)和ZEND STUDIO(這個應用程序能夠運行在任何帶有JAVA運行環(huán)境的操作系統(tǒng)上)。你幾乎可以在每個WEB虛擬主機上運行由PHP建立的網(wǎng)站,而不要考慮服務器所運行的是什么操作系統(tǒng),這一事實讓PHP更加具有吸引力。 PHP能夠提供什么, 先把PHP周圍有什么忘掉一會兒,而考慮一下PHP自身能夠提供什么。它是一門強健的服務器端語言,能夠提供相當多的功能,而且能夠迅速地為頁面提供服務。 容易使用 使用C或者PERL或者具有類似風格和句法的另一種語言的任何用戶都能夠很快上手PHP。 盡管它是設計用在WEB上的,但是它也能夠作為命令行語言使用。你正在編寫的WEB應用程序需要每個小時或者每天執(zhí)行一次某些代碼嗎,使用CRON或者類似的計劃安排管理器,你可以計劃安排PHP代碼在你希望的時候執(zhí)行,使用普通的命令解釋腳本或者批處理文件就能夠執(zhí)行這樣的代碼。不需要自動調用瀏覽器就能夠查看專門的網(wǎng)頁,從而執(zhí)行你的事件,也沒有必要依賴來訪者的點擊來告訴你的系統(tǒng):特定的代碼需要在特定的時候被執(zhí)行。PHP在這一領域可擴展性的事實是絕對具有吸引力的。 PHP的好處 我不是JSP或者ASP的老手,在此我也不想貶低這些語言。相反,我會把注意力放在PHP的好處上。 本地化 PHP讓你能夠為網(wǎng)站的訪問者提供本地化的服務。當用戶點擊進入網(wǎng)站的時候,網(wǎng)站會根據(jù)他們?yōu)g覽器的設置自動地以其母語向其提供頁面。要實現(xiàn)這一點不需要使用用于語言翻譯的煩雜文件,而是使用和本地化的C程序所具有的相同能力,通過一個叫做GETTEXT的系統(tǒng)實現(xiàn)的。如果被請求的語言文件存在,那么用戶所看到的文本就是其母語;如果語言文件不存在,那么文本就是缺省的英語或者其他任何你所指定的語言。許多本地化的UNIX應用程序都將GETTEXT作為標準,它讓第三方的翻譯變得輕而易舉。 輕易地使用命令行 PHP支持在需要的地方設置和執(zhí)行命令行程序。使用標準的UNIX DIFF工具,它能夠生成錯誤最后一次修改同要使用電子郵件發(fā)送到錯誤的所有者的當前注釋之間的不同。PHP代碼對在系統(tǒng)上所編寫的兩個文件執(zhí)行DIFF,將其輸出作為輸入,再生成一個要發(fā)送的電子郵件。這封電子郵件是通過PHP自己來發(fā)送的。 其他好處 上面的只是我在自己程序里所用到的強大功能中的兩個,而還其他的功能。例如,你可以: 即時創(chuàng)建簡單的FLASH動畫。 即時創(chuàng)建PDF文檔。 使用高級數(shù)學功能,以及面向對象的編程技術。 讀取和寫入到本地和IMAP郵箱。 在PHP里就可以使用任何標準的INTERNET協(xié)議。想要編寫基于PHP的FTP、WEB或者 新聞客戶端,沒有問題~只使用PHP你就完全能夠編寫出使用標準TCP/IP套接字的客戶端和服務器,并以此創(chuàng)建自己的協(xié)議。 實現(xiàn)對加密的支持,以及對各種數(shù)據(jù)庫服務器的支持。 缺乏遠見的評論 我覺得,那些尋找頂級WEB開發(fā)語言而排除掉PHP的人是極其短見的。我使用PHP編寫代碼已經(jīng)有很多年了,無論是像錯誤追蹤系統(tǒng)這樣的高級功能,還是簡單地重復使用頁眉和頁腳這樣的普通功能,我都使用PHP編寫過。我用PHP編寫過半靜態(tài)的頁面,也編寫過全功能的多媒體演示。我不是唯一一個使用PHP的人。如果PHP不值得引起注意,如果它只是小兒科或者愛好者的語言,那它為什么會是在WEB開發(fā)上成長最快的語言呢,如果它沒有ASP或者JSP那么強大,那么它為什么會被用在流量巨大WEB網(wǎng)站上,例如YAHOO,據(jù)說它就是由PHP建成的。 開發(fā)人員習慣用熟悉的產(chǎn)品 我敢肯定,ASP 和JSP有它們各自的強項,但是我相信人們是用它們不是因為它們能夠提供比PHP更加強大的功能,而是因為人們已經(jīng)了解了它們,并希望以自己習慣的方法編寫代碼。排除PHP只能表示對這一語言的無知。 關于PHP的前途 譯者注:這是一篇德國人寫的關于,,,的“長篇大論”,作者在文中把,,,吹的神乎其神,大有一統(tǒng)江湖的架勢。且不去管它觀點是否正確,這么一篇經(jīng)典的“吹牛奇文”對我們這些誠惶誠恐的,,,程序員來說,到是非常值得一看的。還是閑話少說,讓我們開始欣賞這騙奇文吧~ 1.序言 定義:PHP是一種簡單的,面向對象的,解釋型的,健壯的,安全的,性能非常之高的,獨立于架構的,可移植的,動態(tài)的腳本語言。PHP具有和JAVA類似的Class關鍵字。因為不需要虛擬機,以致速度比JAVA快5倍。PHP正迅速變成一種標準的,多用途的,面向對象的腳本語言。PHP不僅可用來開發(fā)Web應用程序,也可以開發(fā)普通應用程序。 PHP是一種功能強大的腳本語言。PHP將擊敗PERL/Python并取而代之。PHP是下一代的PERL/Python腳本。PHP可以勝任任何PERL/Python做的工作,并且做的更多,更好,更簡潔~~ PHP是Hypertext Pre-Processor(超文本預處理器)的縮寫,它是一種服務器端的HTML腳本/編程語言。PHP語法上與C相似,可運行在Apache, Netscape/iPlanet, 和 Microsoft IIS Web 服務器上。PHP作為一種工具,可以讓你創(chuàng)建動態(tài)的Web頁面。應用PHP的網(wǎng)頁與常規(guī)的HTML頁面并無二致,你可以用同樣的方式來創(chuàng)建、編輯它們。PHP允許你直接在HTML文件里寫入簡單的腳本,這一點與Javascript非常相似。而不同的是,PHP不依賴于瀏覽器,是服務器端的語言,而Javascript卻是一種客戶端的嵌在HTML中的語言。概念上,PHP與Netscape的LiveWire Pro產(chǎn)品,Microsoft的ASP以及SunMicrosystem 的JSP相似。 PHP不僅可以用來創(chuàng)建Web應用程序,也可以用來開發(fā)普通的單機應用程序。 PHP的強勁之處在于: PHP是一項最優(yōu)秀的技術。其它技術,如PERL,Python, Tcl, VB script, ASP 相對來說,都是陳舊低劣的。即使是Java/JSP,也在PHP之下。 開放源碼 廣泛的數(shù)據(jù)庫連接 大量的擴展庫 作為一種多用途的腳本語言,比PERL,VB script, ASP, JSP都要優(yōu)秀。 為什么選擇PHP,因為PHP是最好的,原因如下: PERL“味道不好”,因為其程序不易閱讀和維護,且不是面向對象的。把PERL忘了,轉向PHP吧。PERL程序員將拋棄PERL,因為他們愛上了PHP~ PHP實際上就是“現(xiàn)代版的PERL”,只是名稱不同而已。 Java 是面向對象的,但速度很慢。Java程序遠行起來很慢,對它唯一的抱怨就是——“Java,真是慢的糟糕”。而且十分復雜(具有許多層,如JVM,JIT 等等)。這往往誘發(fā)問題。既然有了Linux,為什么還要Java呢, Python“不錯”,但沒有C語言中的括號和大括號,而這在vi編輯器中對操控代碼非常有用。如果不能利用vi/emacs編輯器搜索括號/大括號的命令迅速操控代碼,那么就好象斷了手一樣。PHP在技術上比Python更加先進。 PHP是最好的,因為它面向對象,并且吸收了C/C++/Java/PERL的精華。PHP可以替代PERL,Python, Java,C, C++, awk, Unix shell 腳本,Visual Basic 和其它語言~~PHP直接運行,而且是由C寫成的。 每一個電腦程序員都知道PHP是最好的,不信問一下你旁邊的程序員。 ?只有PHP才能稱雄于21世紀、22世紀以及更遠的將來。 為什么我們認為PERL,Python和Java程序員會將歸附PHP,這里有一個很重要的原因。 以前,世界上許多公司都把PHP當作是一個“高度機密,嚴格保密”的電腦程序語言,但是現(xiàn)在它已經(jīng)變成最為著名的,在Web, Internet, E-commerce以及 B2B等諸多項目上應用最廣泛的面向對象的腳本語言。即使是在今天,仍有許多競爭性(competing)公司把PHP當作是高度機密的東西,決不向外界(競爭對手)透露半點。 PHP將如同暴風雨一般席卷整個世界,IT工業(yè)將為之震驚。PHP的力量在于它是跨平臺的,可以運行在任何地方。如Linux,Windows 95/98/NT/2000/XP, Solaris, HPUX 以及各種UNIX。PHP只需寫一次,就可以配置在任何地方。PHP可以運行在Apache,Microsoft IIS等多種Web服務器上。 PHP比Java快5到20倍~~實際的比較測試顯示,PHP的運行速度是Java3.7倍左右。PHP太容易使用了,你可以用它在非常短的時間里,非常迅速的開發(fā)出非常復雜的web,e-commerce和一般的單機應用程序。(在將來,PHP將會模仿Java大多數(shù)的功能,相信Java程序員也會喜歡上它。PHP將包含Java中的關鍵字,如class,extends,interface, implements, public,protected, private 等等等等。) PHP具有面向對象特性,它吸收了Java, C++, PERL 和C的最優(yōu)秀的部分。PHP可以說是所有腳本/編程語言中的寶石。不久,它就會成為全世界程序員的“麥加圣地”。PHP即可以運行在Window95/NT/2000/XP上,也可以運行在各種UNIX上。 我們將大吃一驚——PHP極有可能成為21世紀的電腦編程語言。 可以使用Zend Optimizer對PHP進行編譯和優(yōu)化,從而使它運行的更快。PHP4.0中已經(jīng)集成了Zend Optimizer。 首先,你在開發(fā)、測試、除錯過程中,用PHP腳本語言編寫你的應用程序。一旦項目完成,你便可以用Zend編譯器,將PHP文件編譯成運行速度更快的可執(zhí)行程序。 對于電子商務項目,你一般需要綜合使用PHP(70%),HTML/DHTML/XML(25%)和5%的Javascript(客戶端驗證)。 2.PHP可運行在Microsoft Windwos上~~ PHP最初是運行在UNIX平臺上的,但是它的移植性很好,也可運行在Windows和IIS Web服務器之上。今天,已有了一大批基于Windows 2000/NT/95/98的PHP用戶,你可以找到大量運行于Windows平臺之上的PHP工具。 許多PHP程序員喜歡在Windows上開發(fā)他們的程序,完成后再配置在大型的Linux服務器上,如運行Linux的IBM小型機、Compaq DEC Alpha 以及 Sun sparc。 PHP最大的優(yōu)勢在于,它也可以運行在UNIX/Linux之上,UNIX上的開發(fā)者可以為MS Windows下的PHP用戶服務,而Windows下開發(fā)的PHP代碼也可以不經(jīng)過任何改變,就用于UNIX/Linux上。 PHP自身完全是由C語言寫成的,因此可廣泛運行于各種平臺之上,如BeOS,UNIX, MS Windows, Apple Macintosh,IBM OS/2 以及其它更多的操作系統(tǒng)。 PHP 運行速度非常快,要比Java快出許多。對于Web開發(fā)而言,不如忘了Java/JSP吧~PHP,PHP,到處都將是PHP~ PHP也也將變成一種多用途的面向對象的腳本語言。 3.PHP下載 PHP主站點: PHP資源:代碼交換: Vex Net: 在許多國家都有鏡像站點,網(wǎng)址是www.COUNTRYCODE.php.net,其中COUNTRYCODE可以是us,fe,,sk等等。 3.1 PHP在Microsoft Windows 95/98/NT/2000上的安裝 PHP在Microsoft Windows平臺上極受歡迎,而且另人驚奇的是,它比Microsoft自己的Web腳本語言還要流行。原因在于PHP是面向對象的腳本語言,而ASP卻不是。PHP具有大量可重用的類(對象),在Windows平臺上,PHP要比ASP快許多,而且比ASP具有更多的功能和特色。PHP比ASP更健壯,更可靠,更具威力。由于PHP可運行于MS Windows,Linux, Mac OS和所有的UNIX,所以它具有一個龐大的用戶群。而其最大的優(yōu)勢在于,你可以在Windows上開發(fā)程序,然后配置在UNIX/Linux上,反之亦然。 Windows98/NT/2000下的PHP用戶比其它操作系統(tǒng)都要多,那是因為在Windows98/NT/2000上安裝PHP很簡單。 PHP有可執(zhí)行的安裝程序,你只要雙擊exe文件,2分鐘內(nèi)就可以自動安裝好??蓮娜缦抡鞠螺d可執(zhí)行的PHP安裝程序: Windows下的PHP可執(zhí)行安裝程序: Windows平臺下的PHP資料: ?PHP在Windows下的安裝與配置: PHP Triad可以在Windows平臺上安裝完整的PHP服務環(huán)境: 3.2在Windows 95/98/NT/2000上快速安裝Apache Web服務器(10秒鐘) 在Windows上運行PHP,你需要一個Web服務器,你可以使用微軟的IIS,也可以使用免費的Apache 。因為可以通過Apache的安裝文件setup.exe進行安裝,可以為你節(jié)省許多時間。 PHPTtriad是一個包括Apache、PHP、MySQL的軟件包,可從或其鏡像站點下載。我強烈推薦使用PHPTtriad,它在Windows用戶中極受歡迎(已被下載了幾百萬次)。 Apache 二進制程序: 3.3 微軟的SQL服務器 SQL服務器可以安裝在不需要運行Windows的機器上,而你也需要一個SQL服務器來作Web開發(fā)。我推薦你在很老的PC上(如Pentium或486)安裝Redhat Linux和PostgreSQL RPMs。你數(shù)據(jù)庫并不需要任何Windows圖形界面,可以在控制臺直接啟動PostgreSQL。PostgreSQL的速度大概是Oracle和MS SQL server的3倍。 PHP的PostgreSQL支持庫是由Adam Sussman編寫的,他的郵件地址是:[email protected] 支持Windows NT/2000的PostgreSQL可從下載??蓮墨@取PostgreSQL的使用指南 。 3.4 PHP在UNIX和其它操作系統(tǒng)上的安裝 參見PHP主站點www.php.net上的安裝指南和說明,或所下載的軟件包中的INSTALL文件。 4.快速進階 用PHP的面向對象機制實現(xiàn)一個項目的步驟如下: 首先,你需要連接一個數(shù)據(jù)庫SQL服務器——有下面兩個選擇: ADODB (Active Data Objects Data Base),即動態(tài)數(shù)據(jù)對象數(shù)據(jù)庫() Metabase(Database independent access and management),即數(shù)據(jù)庫獨立訪問和管理( ) 第二,你需要一些通用的PHP類來創(chuàng)建表單、表格和其它HTML對象。這些都可以從PHP classes網(wǎng)站上獲取()??梢詤⒖家幌略摼W(wǎng)站的下載排行榜。也可以從網(wǎng)站上獲取表單類、模板類等。 第三,通過對這些通用類的繼承,來設計和創(chuàng)建自己的PHP類。 第四,使用模板類來分離顯示樣式和業(yè)務邏輯,可參見 第五,使用IDE工具進行開發(fā)(參見PHP IDE一節(jié))。 最后,最好把你代碼封裝成類,這樣可以實現(xiàn)代碼的易維護性和可重用性。 5.PHP的主要特性 支持標準CGI,F(xiàn)astCGI和Apache模塊——作為一個標準的CGI程序,PHP可以安裝在運行任何Web服務器的任何UNIX機器上。 PHP支持新的FastCGI標準,通過這一機制,PHP獲得了速度上的提高。 當配置成Apache模塊時,PHP便成了功能極為強大的,運行速度如閃電般快的新的選擇。 訪問日志——通過PHP的日志訪問功能,用戶可以維護他們的點擊次數(shù)和日志。 該功能提供了實時的訪問監(jiān)測,而不以任何方式使用系統(tǒng)的中心訪問日志文件。日志瀏覽腳本為個人用戶擁有的一組頁面提供快速的訪問摘要。除此之外,該程序包還可以通過配置為每一個頁面生成一個頁腳(footer)來顯示訪問信息??蓞⒖嘉恼潞竺娴睦?。 訪問控制——個內(nèi)建的基于Web的配置“篩”,可實現(xiàn)對訪問控制的配置。這樣,才有可能為所有或部分Web頁面創(chuàng)建一套規(guī)則,使得擁有這些頁面的特定的人可以對他的網(wǎng)頁設置各種限制,如,什么人可以訪問這些頁面以及這些頁面以怎樣的一種方式被訪問。對頁面的設置有許多方式,如密碼保護、完全限制、登錄失效、或者更多的以客戶的域、瀏覽器、e-mail地址甚至涉及的其它文檔為設置依據(jù)。 支持PostgresSQL——PostgresSQL是一個先進但是免費的RDBMS(關系數(shù)據(jù)庫管理系統(tǒng))。PHP支持在.html文件中直接嵌入PostgresSQL的“SQL 查詢語句”。 支持RFC-1867文件上傳——文件上傳是Netscape2.0新增的一項功能。用戶可以將文件上傳到Web服務器。 PHP提供了實際的MIME解碼功能,使得文件上傳成為可能。PHP還提供額外的框架,可 對收到的上傳文件進行一些有用的處理。 基于HTTP的身份驗證控制——PHP可以用來為Apache服務器創(chuàng)建自定義的基于HTTP的身份驗證機制。 變量、數(shù)組,聯(lián)合數(shù)組(associative arrays)——PHP支持typed(這個單詞不知道怎么譯,望高手指點)變量,數(shù)組,甚至Perl風格的聯(lián)合數(shù)組。而這些都可以通過GET或POST方法的表單從一個頁面?zhèn)鬟f到另一個頁面。 條件語句、While循環(huán)——PHP是一種類似C語言的功能完整的腳本語言。你可以使用if/then/elseif/else/endif條件語句,以及While循環(huán)和Switch/case語句來安排HTML頁面顯示的邏輯流程。 擴展的正規(guī)表達式——正規(guī)表達式頻繁地應用于模式匹配、模式替換以及一般的字符串操作。PHP支持所有常用的正規(guī)表達式操作。 原始的HTTP Header控制——根據(jù)某種條件,讓Web頁面能夠發(fā)送自定義的原始HTTP頭對一些高級的網(wǎng)站設計來說是非常必要的。一個常見的用法就是發(fā)送一個Location:URL頭,把客戶端的請求重定向到另外一個URL上。也可以用來關閉緩存或操作頁面最新更新的HTTP頭。 動態(tài)創(chuàng)建GIF圖片——PHP已經(jīng)支持Thomas Boutell的GD圖片庫,可以實現(xiàn)GIF圖片的動態(tài)創(chuàng)建。 支持ISP“安全模式”——PHP支持獨特的“安全模式”,從而使得多個用戶運行同一臺服務器上的PHP腳本變得更加安全。 新發(fā)布的PHP中又增加了許多新的功能??稍L問PHP的主站點。 ?PHP是免費的~——這是最后一個重要特色。PHP的程序包是完全免費的。它遵守GNU/GPL。你可以把這個軟件用于實現(xiàn)商業(yè)或者其它任何目的。 5.1 PHP相對于Java的優(yōu)勢 PHP是一種已經(jīng)確定下來的,用于創(chuàng)建動態(tài)網(wǎng)頁的服務器端的腳本語言。作為一種為Web而特別設計的語言,PHP帶來了許多商業(yè)機構渴望的特性。 維護周期短 快速的開發(fā)時間 非常高的性能 PHP可以在所有主要的操作平臺(UNIX,Windows,甚至是大型機)上運行,而且生來就支持各種流行的數(shù)據(jù)庫。所有這一切決定它是一種進行Web開發(fā)的非常理想的選擇:曾有運用PHP技術的網(wǎng)上商店稱,幾天內(nèi)就能夠開發(fā)出可重用的代碼。那些熟悉諸如C,C++或Java等語言的程序員們,也總是發(fā)現(xiàn)他們能夠在幾個小時之內(nèi)就能夠進行PHP編程。 PHP是針對Web開發(fā)而設計的,這一事實使它成為一種獨具特色的開發(fā)工具,就象Intranet Design雜志評價的那樣: “PHP是構建在Web開發(fā)人員現(xiàn)實需求之上的....不同于其它笨重的,高負荷的方法,PHP非常輕便,是為Web開發(fā)度身定做的。它可以比其它同類技術更快,更容易的解決復雜的問題?!?/p> Java作為一種新的編程語言,最初用于運行嵌在瀏覽器中的客戶端應用程序。在過去短短幾年中,“applet”所暴露的問題迫使SUN和其它Java開發(fā)人員為該語言尋找新的出路。其中最為突出的就是服務器端編程,它允許Web站點連接數(shù)據(jù)庫并產(chǎn)生其它服務器端的應用程序,即“servlets”。SUN最終推出了Java Server Pages(JSP)作為編寫servlets的手段。與PHP一樣,JSP在不同平臺間也具有高可移植性(盡管PHP支持任何32位以及32位以上的平臺,而JSP只能在安裝了Java虛擬機的平臺上運行)。 然后,沒有編程背景的新手會發(fā)現(xiàn),使用servlets編程是一件極為困難的事,原因在于該語言的復雜性以及JSP系統(tǒng)復雜的設計方式。 JSP的性能也存在許多待改進的地方:ZDnet的在線刊物eWeek最近的一項調查發(fā)現(xiàn),PHP的運行速度差不多是JSP的3.7倍??梢哉f,JSP是Web環(huán)境中非常差的一種解決方案,這是因為它每秒鐘只能處理很少的事務,而且響應速度相當?shù)穆?/p> ZDnet的eWeek雜志還提到: “JSP是一項相對較新的技術,從開發(fā)工具、資源、人才方面來看,還未具有完全的市場成熟度?!?.....由于JSP是基于Java的,而Java由是一種強類型的語言,所以我們不得不聲明變量的類型,并在需要的地方手工轉換類型。這使得JSP成為程序員最難于學習的一種腳本語言。 PHP與Java協(xié)同工作 JSP僅僅是一種能夠訪問Java對象的語言罷了,認識到這一點很重要。而PHP也可以整合Java,這意味著,PHP可以象JSP一樣,成為一種能夠調用Java邏輯的腳本語言。但與JSP不同的是,PHP還可以調用其它組件模型,如Microsoft的COM,而且增加對新的對象模型的支持也極為容易。可見,PHP的擴展能力是無窮的。而另一方面,JSP完全依賴于Java。 IBM程序員Sam Ruby聯(lián)合使用PHP和Java。通過PHP對Java的良好支持,使得Java對象如同常規(guī)的PHP對象一樣,透明地被創(chuàng)建和使用。 AutionWatch網(wǎng)站使得各種規(guī)模的商業(yè)團體都可以從其動態(tài)競價環(huán)境中獲益。它每月的訪問人數(shù)在二百六十萬以上;已有三十多萬個注冊用戶;每個月進行一百二十萬次拍賣。 他們曾嘗試使用Java,但還是選擇了PHP,就因為它更容易使用,開發(fā)速度更快。若想知道的更多,請聯(lián)系Ben Margolin,他是AuctionWatch網(wǎng)站銷售服務部的主任([email protected])。 編程顧問Reuven Lerner曾在各種語言之間作過比較。他對PHP的看法概括如下: “這是門容易學習的語言。美工和Web設計師可能會說他們并非程序員,但事實上,他們在大型項目中,越來越多的使用了JavaScript,VBScript以及其它一些簡單的編程語言。與Perl相比,PHP更加正規(guī)和明確;對一個新手來說,PHP比Java更容易掌握。確實,PHP有點象JavaScript(如果存在服務器端版本的話)。任何人,不管有無編程經(jīng)驗,都可以在很短的時間里學會并使用PHP。這一點也許VBScript可以做到,但Perl和Java肯定不行.....PHP絕對是一個非凡的,強大的系統(tǒng)。無怪乎能夠成為創(chuàng)建Web站點的流行語言.....我認為,PHP將成為Java和JSP強有力的競爭對手,我會在某些客戶和公司內(nèi)部項目中極力推薦PHP?!?/p> PHP:一直在前進 JSP有Sun作為其后盾,因此不斷獲得媒體的關注。但有趣的是,盡管沒有任何宣傳攻勢,PHP的流行度仍然以8-11%的速度在增長,遠遠大于服務器端應用程序4%的月增長率。有六百五十萬個站點使用了PHP(參見Netcraft 2001年5月的調查報告)。39%的Apache服務器上配置了PHP;而Perl占了11%的市場分額,名列第四。Apache保持著59%的Web服務器市場占有率;Microsoft次之,僅28%(參見E-Soft Inc./SecuritySpace 2001年5月的調查報告)。 使用PHP的著名公司有:Unilever、Philips、NTT、Cisco、 Japan Airlines、 Air Canada、 Lufthansa、GE Marketplace、 Wallstreet:Online Germany、 AuctionWatch、 VillageVoic、 Dialpad以及BMC。 1.Intranet Design雜志:一個IT經(jīng)理對PHP的看法,2000年6月4日。 2.eWEEK:四中腳本語言的速度開發(fā),2000年10月30日。 11011,2646052,00.html 關于PHP的前途(三) 6.PHP的簡要歷史 PHP最初作為一種用Perl寫成的簡單小巧的CGI工具,被稱為“個人主頁工具(Personal Home Page Tools)”,后來改稱為“個人主頁構建工具箱(Personal Home Page Construction Kit)”。 也曾叫做“專業(yè)主頁工具(Professional Home Pages)”,現(xiàn)在最新的名稱是 “PHP超文本預處理器(PHP Hypertext Pre-Processor)” 另外還有一種工具,可以非常簡單的把SQL查詢語句嵌入Web頁面當中。這種工具基本上可以看作是解析SQL查詢語句,并在此基礎上非常容易的創(chuàng)建表單和表格的另一種CGI工具。這種工具叫做FI(Form Interpreter,表單解釋器)。 PHP/FI2.0徹底重寫了這兩個包,并合并成一個單獨的程序。最終發(fā)展成一種嵌在HTML文件當中的簡單的程序語言。PHP通過直接在HTML文件中放置簡單的腳本 使得不再需要創(chuàng)建大量微小的Perl CGI程序。因為免去了多次調用Perl程序的負荷,所以大大提高了你的Web頁面的總體性能。大大提高了你的Web頁面的總體性能。 而且通過把構成Web頁面的所有組件放在一個單獨的HTML文件中,使得大型站點的管理變的更為容易。 由于包括了對各種數(shù)據(jù)庫的支持,可以非常容易的開發(fā)基于數(shù)據(jù)庫的Web頁面。 許多人都認為,這種方式比創(chuàng)建分離的HTML和CGI文件更為簡單。 現(xiàn)在,PHP/FI又被重新命名為PHP。 7.一個簡單的例子 假設你有這樣一個表單: <FORM ACTION="display.php" METHOD=POST> <INPUT TYPE="text" name="name"> <INPUT TYPE="text" name="age"> <INPUT TYPE="submit"> </FORM> 你的display.html文件可以這樣來顯示表單所提交的內(nèi)容: <? echo "HI $name, you are $age years old!<p>"; ?> 這是那么地容易~ PHP自動為每一個表單輸入域創(chuàng)建了變量。你可以直接在 ACTION指向的文件中使用這些變量。 一旦搞清楚了變量使用方法,那么下一步你便可以在頁面中編寫一些邏輯流程了。 例如,你想根據(jù)不同的用戶輸入來顯示不同的消息,就可以使用if/else語句。 把上面的例子改一改,我們就可以根據(jù)用戶輸入的年齡做不同的顯示了: <? if($age>50); echo "Hi $name, you are ancient!<p>"; elseif($age>30); echo "Hi $name, you are very old!<p>"; else; echo "Hi $name."; endif; ?> PHP提供了一套非常強大的腳本語言,它能做的要比上面這個簡單的例子要多的多??蓞⒁奝HP腳本語言部分,獲取更多信息。 你也可以用PHP來配置頁面的訪問權限。這是通過一個內(nèi)建的配置界面來實現(xiàn)的。比方說,你可以指定來自特定的域的用戶才能訪問你的頁面?;蛘?,你也可以創(chuàng)建一個規(guī)則,用密碼保護特定的頁面。 可參見訪問控制部分,以獲取詳細內(nèi)容。 PHP還能夠從任何RFC-1867兼容的Web瀏覽器上載文件。 這一功能使得用戶可以上傳文本和二進制文件。通過PHP的訪問控制和邏輯函數(shù),你可以對誰可以上傳文件以及文件上傳后執(zhí)行什么操作等實現(xiàn)完全的控制??蓞⒁娢募蟼鞑糠郑垣@取詳細內(nèi)容。 PHP有PostgreSQL數(shù)據(jù)庫的支持包。它支持在HTML文件中嵌入SQL查詢語句。 8. SOAPX4和PhpXMLP SOAP是一種基于XML的協(xié)議,用于在兩個進程間傳送消息和進行RPC式的通訊。萬維網(wǎng)聯(lián)盟的XML協(xié)議(XP)工作小組正在開發(fā)SOAP標準,這一標準將被稱為XP。 SOAPX4(Simple Object Access Protocol,簡單對象訪問協(xié)議)是PHP實現(xiàn): 以及。 8.1 XML/XSLT發(fā)布引擎 Krysalis是一套基于PHP技術的XML/XSLT發(fā)布引擎,其設計思想來自于Cocoon。 InterAKT公司開發(fā)Krysalis為得是實現(xiàn)下一代Web服務的功能,即信息,應用程序邏輯和表示層的完全分離。 Krysalis是一種開放源碼的以XML/XSLT為核心的PHP開發(fā)平臺,它利用了PHAkt的大部份代碼,創(chuàng)建了Krysalis標記庫(taglib)。 其主要功能有: 動態(tài)的XML支持。 動態(tài)生成PDF文檔。 用正規(guī)表達式描述站點地圖。 PXP頁面緩存。 多個轉換管道。 針對不同數(shù)據(jù)的多個連接類型(ADODB)。 請訪問Krysalis的站點獲取更多信息 9.PHP類庫 PHP是一個面向對象的腳本語言。因此PHP代碼是“類,類,類,還是類”。在你編寫PHP代碼時,你必需編寫可重用的類,這些類也可以使用現(xiàn)有的類。 網(wǎng)上有著大量編寫好的類,拿來就可以使用。這其中有用來訪問數(shù)據(jù)庫的類,生成XML文檔和HTML表單的類,還有用來創(chuàng)建表格和其它HTML對象的類。 如果你編寫了什么通用的類,那么請你把它放到網(wǎng)上去。 到2005年,網(wǎng)上將會有超過1億個可重用的PHP類。PHP類的優(yōu)勢在于它們提供了數(shù)據(jù)隱藏、繼承、封裝、可靠性、可重用性以及多態(tài)性等功能和特性。下面給出了最重要的PHP站點: 9.1 PHP類與PHP擴展和應用程序庫 可訪問下列Web站點獲取大量立馬就可以用的PHP類庫 PHP classes: . PEAR(PHP擴展和應用程序庫)是一個PHP擴展程序的代碼庫,與Perl的CPAN相似: ADODB (Active Data Objects Data Base,動態(tài)數(shù)據(jù)對象數(shù)據(jù)庫) : PHP的數(shù)據(jù)庫訪問函數(shù)并不統(tǒng)一。每個數(shù)據(jù)庫擴展都使用不同并且不兼容的API函數(shù)。這就需要創(chuàng)建一個數(shù)據(jù)庫類來隱藏不同數(shù)據(jù)庫間的差異(即對不同數(shù)據(jù)庫間的差異進行封裝)。 從而,我們可以很容易的實現(xiàn)數(shù)據(jù)庫的切換。ADODB目前可以支持MySQL、PostgreSQL、Interbase、 Oracle、 MS SQL 7、 Foxpro、 Access、 ADO、 Sybase和一般的ODBC。 可參考ADODB的手冊。PhpLens就是基于ADODB的。 Metabase (數(shù)據(jù)庫獨立訪問和管理) PHP Hot scripts: 非常受歡迎的PHP資源站點: PHP項目站點: PHP Lib Netuse: PHP小工具: PHP4通用框架: Source Forge的PHP庫: Source Forge的PHP程序片段: E-gineer的PHP庫 PHP常見問題解答: PHP庫 PHP工廠: PHP Builder: PHP developer: PHP新手: PHP walrus: 9.2 其它PHP工具 其它的PHP工具有: 用戶登錄樣本: phpPDFtable是一個PHP類,方便PDF報表的創(chuàng)建。需安裝PHP4.x(PHP3.x應該也可以)和pdflib: 數(shù)據(jù)管理員提供了一個基于PHP的數(shù)據(jù)管理界面。它并不僅限于一個或兩個數(shù)據(jù)庫。并且封裝了原來的PHP數(shù)據(jù)庫訪問函數(shù): PSlib是一個用來生成PostScript文件的類庫。提供了一個生成PostScript文件的簡單方法。 只需在你的PHP腳本中調用PSlib函數(shù)就可以非常容易的生成PS文件: 可緊密合作的一組完整的PHP腳本,可創(chuàng)建高度自定義的,動態(tài)的和面向模塊的web站點: phpOpenTracker是一個站點訪問追蹤的全面解決方案。所收集的數(shù)據(jù)存儲在SQL數(shù)據(jù)庫中??梢赃M行復雜但是簡單的分析工作。包含了一套用于分析和生成報表(HTML和PDF)的功能強大的API: PHPShopCart 是一個用PHP的編寫的網(wǎng)上購物車程序,使用MySQL數(shù)據(jù)庫。此程序是為 “Linux下的數(shù)據(jù)庫指南”這本書編寫的”(Syngress Media): 10 PHPGem 包 PHPGem本身也是PHP腳本程序,可加速生成操作數(shù)據(jù)表的PHP腳本??晒ぷ饔诓煌腟QL數(shù)據(jù)庫,如PostgreSQL、MySQL、mSQL、ODBC以及Adabas。你只要輸入數(shù)據(jù)字段的描述信息和參數(shù)(如字段名稱、是/否搜索字段等),PHPGem就會為你輸出另一個PHP腳本,該腳本可以對這個數(shù)據(jù)表進行各種操作(瀏覽/添加/編輯/刪除/復制/搜索)。PHPGem支持多層嵌套的數(shù)據(jù)表。PHPGem允許你為每一個用戶指定對每一個數(shù)據(jù)表和字段訪問的級別。PHPGem還支持圖象信息。 專家預言:PHP將比Java更好更受歡迎 Netscape共同創(chuàng)辦人Marc Andreessen在Zend/PHP會議上預言,簡單的PHP描述性語言撰寫工具,在Web-based應用程序的開發(fā)上,將會比Java更受歡迎。 在升陽(Sun Microsystems)于1995年發(fā)表Java之后,由于Java的友善接口讓工程師設計軟件更為容易,受到工程師歡迎,但十年下來Java陸陸續(xù)續(xù)被加入了強大的功能,反而使它變得不容易操作。Marc Andreessen指出,現(xiàn)在的Java可能比C++更難學,在此同時,PHP傳承了Java的簡單精神,并創(chuàng)造一個比Java更容易使用的程序開發(fā)環(huán)境。 PHP為一開放原始碼項目,其中包括可以簡化程序的描述性語言引擎以及一個大的鏈接庫,也有專門開發(fā)PHP的公司,如Zend就有銷售PHP套裝產(chǎn)品、程序撰寫工具及技術支持服務。 Andreessen的看法可能很難博得Java擁護者的認同,因為現(xiàn)階段全球仍有數(shù)百萬專研Java的工程師,也有數(shù)百家公司參與Java Community Process(JCP),在JCP中共同主掌Java的命運。但是,就算是大力扶植Java、甚至以Java為WebSphere服務器軟件核心的IBM,也認為PHP的前途會比Java來得好。 IBM新網(wǎng)絡科技事業(yè)處副總裁Rod Smith就說,「簡單」是PHP最大的特色,而且它不會為了與其它語言競爭而加入新的語言功能,Java顯然就不是這么做。 而且,PHP的勢力也不小,目前約有2200萬的網(wǎng)站采用PHP,包括Yahoo!、Lufthansa等知名網(wǎng)站,數(shù)量并持續(xù)增加中,并有450個軟件工程師有權去審核在PHP軟件上的任何變動。 與Java相較,PHP可用范疇限制較多,它僅能用在網(wǎng)絡服務器上,不像Java,同時可用在網(wǎng)絡服務器、個人計算機、手機、芯片卡或其它裝置。 Java和PHP除了在某些方面相互競爭之外,某個程度來看,也在彼此靠隴。甲骨文產(chǎn)品策略副總Ken Jacobs表示,即使甲骨文(Oracle)銷售同時可執(zhí)行Java及PHP的Java服務器與數(shù)據(jù)庫軟件,但正為Java加上一項額外的新功能,讓這兩個軟件項目可以協(xié)同運作;更 具體的說,Java規(guī)格需求223(JSR 223)將會「協(xié)助建構在Java社群與PHP社群之間的那座橋梁」。 日前才發(fā)表可以分享照片等內(nèi)容網(wǎng)站「Ning」的Marc Andreessen也說,現(xiàn)在Ning也同時執(zhí)行Java與PHP,其中核心系統(tǒng)是由Java組成,比起該站所有可看見的應用程序都是由PHP寫成,Java更像是操作系統(tǒng)層級。 就像其它諸如Linux及Apache的開放原始碼項目,PHP目前也受到計算機工業(yè)主要大廠的庇佑,像IBM跟Oracle都致力開發(fā)讓PHP軟件可以擷取旗下數(shù)據(jù)庫的程序。事實上,IBM與Oracle的行為就像在為PHP背書,連這兩大廠都支持PHP,證明PHP也許就是個好東西。
信息發(fā)布:廣州名易軟件有限公司 http://m.jetlc.com
|