7種流行PHP集成開(kāi)發(fā)工具的比較(1)
本文發(fā)掘集成開(kāi)發(fā)環(huán)境(IDE)的所有用途,并比較 7 種流行的 IDE 的成本和優(yōu)勢(shì)。
編寫(xiě)關(guān)于 PHP 的系列文章讓我更加深刻地了解了 PHP 開(kāi)發(fā)人員的世界。我和許多 PHP 程序員交談過(guò),最令我驚奇的是只有很少的人使用 IDE。大多數(shù)程序員使用文本編輯器,比如 Microsoft Windows 上的記事本、Emacs 或者 Vim。
我提到的這些文本編輯器(以及我沒(méi)提到)都是很不錯(cuò)的 —— 我不想討論哪個(gè)編輯器更好。但是,我要強(qiáng)調(diào)的是不使用文本編輯器會(huì)使您對(duì) PHP 代碼有更深的見(jiàn)解。幾乎所有人都將 PHP 項(xiàng)目視為只不過(guò)是文件目錄而已(這種看法十分片面)?,F(xiàn)在就讓我?guī)M(jìn)入 IDE 的世界,向您展示 IDE 能夠 —— 或者應(yīng)該 —— 給您帶來(lái)什么,并向您介紹七個(gè)最流行的 IDE。
什么是 IDE?
簡(jiǎn)而言之,IDE 為編碼工作提供了一站式服務(wù)。IDE 包括一個(gè)編輯器,在此編輯器內(nèi)可以編輯代碼、調(diào)試代碼、在瀏覽器(通常是嵌入式的)中查看代碼和簽入和簽出源碼控制。為了支持這些功能,IDE 擁有一套在基本編輯器(比如記事本或者 Vim)中所找不到的特性。當(dāng)然,您可以通過(guò)擴(kuò)展編輯器來(lái)實(shí)現(xiàn)這些功能,但是 IDE 在一個(gè)精簡(jiǎn)軟件包中囊括了所有這些功能 —— 并都已預(yù)配置:
項(xiàng)目
IDE 的一個(gè)關(guān)鍵特性是它把一個(gè) PHP 應(yīng)用程序看作是一個(gè)項(xiàng)目,而不僅僅是一組文件。這個(gè)概念 —— 項(xiàng)目 —— 維護(hù)額外的信息,比如源碼控制的配置、用于調(diào)試的數(shù)據(jù)庫(kù)設(shè)置,以及某一關(guān)鍵目錄所在位置。
調(diào)試
另一個(gè)方便的特性是集成調(diào)試。使用這個(gè)功能,可以在編輯器中設(shè)置斷點(diǎn),當(dāng) PHP 解釋程序執(zhí)行到這個(gè)腳本時(shí)就會(huì)停止。從斷點(diǎn)開(kāi)始,就可以檢查局部變量的值,在代碼中診斷問(wèn)題。在代碼中可以使用 echo 語(yǔ)句來(lái)檢查值或者也可以使用錯(cuò)誤日志獲得變量的值。
代碼智能
PHP 是一種非常規(guī)則的編程語(yǔ)言,這意味著它遵循著簡(jiǎn)單的模式。這些模式不僅使代碼易于編寫(xiě),也使 IDE 在項(xiàng)目中檢查代碼變得很容易。此外,它們可以通過(guò)顯示檢查結(jié)果幫助您編寫(xiě)程序。例如,如果在項(xiàng)目中定義了一個(gè)名為 MyClass 的類(lèi),在鍵入關(guān)鍵詞 new 時(shí),IDE 會(huì)立即提供一個(gè)包括 MyClass 作為選項(xiàng)的彈出窗口。當(dāng)使用那種類(lèi)型的對(duì)象時(shí),IDE 就會(huì)顯示它的可用方法和實(shí)例變量。當(dāng)開(kāi)始鍵入一個(gè)函數(shù)命令時(shí),IDE 就會(huì)顯示它的可用參數(shù)。公正地說(shuō),這是應(yīng)該使用 IDE 而不是文本編輯器的首要原因。這種代碼智能可以有效減少敲錯(cuò)類(lèi)名、方法名和參數(shù)。
類(lèi)視圖
IDE 中的代碼智能引擎產(chǎn)生的另一個(gè)作用是 IDE 可以產(chǎn)生項(xiàng)目的 類(lèi)視圖。系統(tǒng)不是顯示文件,而是顯示已經(jīng)定義的不同的類(lèi),而不管它們所在的文件。當(dāng)單擊類(lèi)時(shí),編輯器訪問(wèn)相應(yīng)文件并顯示相應(yīng)類(lèi)、方法或者實(shí)例變量。這在大項(xiàng)目中是一種非常好的導(dǎo)航方法。
多語(yǔ)言支持
這里提到的每種 IDE 不僅支持 PHP 而且支持相關(guān)語(yǔ)言集:JavaScript、Structured Query Language(SQL)、Hypertext Markup Language(HTML)和 Cascading Style Sheets(CSS)。因?yàn)?nbsp;HTML 和 CSS 比較簡(jiǎn)單,所以 IDE 對(duì)它們的支持是最好的。對(duì)于 JavaScript 的支持經(jīng)常會(huì)突出語(yǔ)法,但是支持比不支持要好。
源碼控制
這里評(píng)價(jià)的所有 IDE 都支持一些與源碼控制系統(tǒng)的連接,允許隨著時(shí)間維護(hù)項(xiàng)目中的文件版本。可以標(biāo)記文件的特別版本為發(fā)布版本,這樣在需要撤銷(xiāo)改動(dòng)的時(shí)候就可以恢復(fù)。在團(tuán)隊(duì)環(huán)境中使用源碼控制系統(tǒng)是很關(guān)鍵的,即使對(duì)于個(gè)人使用也很重要。當(dāng)磁盤(pán)癱瘓或者客戶(hù)突然想要以前的版本而不是現(xiàn)在的版本的時(shí)候,一個(gè)好的源碼控制系統(tǒng)就可以發(fā)揮作用了。大多數(shù)的 IDE 都支持 Concurrent Version System (CVS) 和 Subversion,它們都是開(kāi)源控制系統(tǒng)。其中一種 IDE 支持 Perforce —— 一款商業(yè)源碼控制系統(tǒng)。
FTP/SFTP 集成
與源碼控制相關(guān)的一種功能是在服務(wù)器中對(duì)于最新的代碼使用 FTP 。這比使用 FTP 客戶(hù)機(jī)或者自己打包文件并發(fā)送給服務(wù)器然后再解包要容易許多。
數(shù)據(jù)庫(kù)導(dǎo)航
一個(gè)非基本但十分有用的特性是數(shù)據(jù)庫(kù)導(dǎo)航。使用這個(gè)特性,可以瀏覽應(yīng)用程序訪問(wèn)的數(shù)據(jù)庫(kù)、找到表格和字段名并返回查詢(xún)結(jié)果。一些系統(tǒng)甚至可以自動(dòng)寫(xiě)入一些數(shù)據(jù)庫(kù)訪問(wèn)代碼。
集成 Web 瀏覽器
一些 IDE 支持集成 Web 瀏覽器,可以直接導(dǎo)航到正在使用指定的附加參數(shù)編輯的頁(yè)面,這個(gè)瀏覽器可以宿主在 IDE 內(nèi),也可以外部調(diào)用。誠(chéng)實(shí)地講,我并不大喜歡集成瀏覽器,因?yàn)槲也唤橐庠诰庉嫶a和查看結(jié)果這兩個(gè)獨(dú)立的應(yīng)用程序之間切換。但是我知道它確實(shí)有一定的作用,但您不必一定要使用它。
片段
在所有這些 IDE 中我發(fā)現(xiàn)的最后一個(gè)特性是對(duì)于整段和定制代碼片段的支持。片段 是完成小任務(wù)(比如在一些輸入中運(yùn)行常規(guī)表達(dá)式、連接到數(shù)據(jù)庫(kù)和查詢(xún)數(shù)據(jù)庫(kù))的小部分代碼。
以上總結(jié)了目前從購(gòu)買(mǎi)的或者開(kāi)源的 IDE 中可以預(yù)期的核心特性。接下來(lái),將會(huì)介紹一些流行的 IDE,展示一些 IDE 圖片,并將解釋它們所支持的功能及其成本。
Eclipse
在 Eclipse 開(kāi)發(fā)平臺(tái)中有兩個(gè)插件支持 PHP。第一個(gè) PHP IDE 項(xiàng)目是 Eclipse Foundation 項(xiàng)目,這意味著它在 Eclipse 許可范圍內(nèi)發(fā)布,并使用 Eclipse Foundation 工具和方法開(kāi)發(fā)。
另一個(gè)是 PHPEclipse,它是獨(dú)立開(kāi)發(fā)的。因?yàn)槭褂?nbsp;Eclipse,所以這兩個(gè)插件都可以在三大操作系統(tǒng)中運(yùn)行:Windows、Linux 和 Mac OS X。您可以只下載這兩個(gè)插件(如果已經(jīng)使用 Eclipse),或者下載包含所需要的全部?jī)?nèi)容的 pre-fab 版本。
這兩個(gè)插件都支持核心 IDE 特性。特別是代碼智能特性,它十分強(qiáng)大,可以在需要的時(shí)候彈出并顯示所有需要的類(lèi)、方法和參數(shù)信息。
圖 1 顯示了 Mac OS X 上運(yùn)行的 PHPEclipse。左邊是在項(xiàng)目中文件的項(xiàng)目視圖。下面是類(lèi)視圖,顯示所有已經(jīng)定義的類(lèi)。中間是代碼??梢酝瑫r(shí)在多個(gè)選項(xiàng)卡中打開(kāi)多個(gè)文件。右邊是調(diào)試和瀏覽的面板。這是常用的 PHPEclipse 用戶(hù)界面。
圖 1. OS X 上的 PHPEclipse
圖 2 顯示了來(lái)自 Eclipse Foundation 的 PHP IDE 項(xiàng)目插件。
圖 2. OS X 上的 PHP IDE 項(xiàng)目
如果您不能看出區(qū)別,沒(méi)有關(guān)系。這兩個(gè)插件看起來(lái)確實(shí)非常類(lèi)似,因?yàn)樗鼈兌家揽?nbsp;Eclipse 平臺(tái)呈現(xiàn)代碼瀏覽和智能特性。Eclipse 插件 GUI 能夠保持連貫性是件很好的事情。
我沒(méi)有發(fā)現(xiàn)哪一個(gè)插件可以把您鎖定在某一個(gè) Eclipse 項(xiàng)目中。您可以經(jīng)常地將一個(gè)插件換成另一個(gè)插件。在我有限的測(cè)試中,我更喜歡 PHP IDE 項(xiàng)目插件,因?yàn)槲腋杏X(jué)它集成得更好,而且代碼智能特性的性能似乎更快捷。試試這兩個(gè)插件,看看您更喜歡哪一個(gè)。
這兩個(gè)插件的缺點(diǎn)是 UI 不是為 PHP 量身訂做的,原因是 Eclipse 可以用于幾乎所有的編程語(yǔ)言。結(jié)果是,Eclipse 的術(shù)語(yǔ)最初有些另類(lèi)。如果您剛開(kāi)始學(xué)習(xí) Eclipse,那么這些插件的學(xué)習(xí)比其他 IDE 更難一些。但是,如果已經(jīng)了解 Eclipse,那么您就能比較快地熟悉 PHPEclipse 或者 PHP IDE 項(xiàng)目。
Eclipse 和這些插件的最大優(yōu)點(diǎn)是什么?它們是免費(fèi)的,而且穩(wěn)定、可靠。哦,我提到它們是免費(fèi)的嗎?
Komodo
下一個(gè)要介紹的是 ActiveState 的 Komodo IDE。這個(gè) IDE 在 Windows、Mac OS X 和 Linux 上運(yùn)行,并支持通用的開(kāi)源語(yǔ)言 —— Perl、PHP 和 Ruby。代碼智能引擎非??煽?。它掃描所有語(yǔ)言安裝找到定制擴(kuò)展,比如 PEAR 模塊。在項(xiàng)目方面,它支持與 CVS、Subversion 和 Perforce 的集成,也允許直接向服務(wù)器 FTP 傳遞代碼。
圖 3 顯示了在 Windows 上運(yùn)行的 Komodo。左邊是類(lèi)視圖,右邊是項(xiàng)目視圖。中間的主要部分是代碼視圖。下面是調(diào)試用的斷點(diǎn)、命令輸出等等。對(duì)于所有這些系統(tǒng),都可以根據(jù)需要定制 UI 。
評(píng)論