在 Eclipse 上開發 PHP 程式(以 Moodle、EGit、PDT 為例)

最近受命必須要研究 moodle,並且希望可以用 Eclipse 這種比較聰明的 IDE 來開發,而 moodle 本身是 PHP 寫的,之前只有使用 Eclipse 開發過 Java,這篇文章只是簡單記錄怎麼讓 Eclipse 可以開發 PHP 程式,並且透過 EGit 將遠端 moodle 原始碼 clone 回來!

先到 http://java.com 下載新版的 Java 執行環境。Eclipse 非常大,不論是檔案大小或是所需要的記憶體,記憶體建議 1GB 以上。

  • 安裝Eclipse

到 Eclipse 官網 (http://www.eclipse.org/downloads/) 根據自己的環境選擇對應的 Eclipse (Windows, Linux, Mac, 64bit, 32bit),下載列表會看到很多例如:Java EE, Java, C/C++ … 等,這邊只要下載 Eclipse Classic 版本即可。
下載回來後的檔案是一個壓縮檔(看環境),解壓縮後執行 Eclipse.exe,視情況在桌面建立捷徑。

  • 第一次啟動

第一次啟動會要求提供工作空間(workspace),這邊直接使用每個不同系統的預設環境就好。

  • 安裝必須的插件(Plugins)

如果一開始下載的就是 Eclipse for PHP Developers 的版本,可以直接跳過此步驟。
這邊每個版本的情況會不同,參考資料1的部分無法完成因此這邊採用參考資料2

    

從上方選單「Help」->「Install New Software…」->「Work with: Juno – http://download.eclipse.org/releases/juno (註1)」-> 最下面找到「Web, XML, Java EE and OSGi Enterprise Development

-> 勾選

Eclipse Web Developer Tools
JavaScript Development Tools
PHP Development Tools (PDT) SDK Feature

-> 「Next >」-> 「Next >」-> 「I accept the terms of the license agreements」-> 「Finish」-> 完成後會重新啟動 Eclipse
註1.  juno 是 Eclipse 的版本名稱,不同版本下載回來後會有相對應的更新網址,這邊只要選 Eclipse 附帶的更新網址即可。

  • 設定 Moodle 偏好值

參考資料1裡面的設定有些找不到,有些似乎沒那麼重要,就用著用著再慢慢去看要設定些什麼。

  • 安裝 EGit

使用 Git 是為了讓往後版本控管比較容易一些,下載 Eclipse 的 EGit 插件。一樣到上方選單「Help」->「Install New Software…」->「Work with: Juno – http://download.eclipse.org/releases/juno」-> 輸入「git

選擇 Eclipse EGitEclipse JGit,接著下一步直到完成安裝,完成安裝後系統會要求重新啟動 Eclipse。

  • 使用 EGit clone 原始碼

這邊卡了一段時間,一直卡在到底是先 import project,還是先 Import Project From Git,而 Import Project From Git 後,又不允許讓他變成專案(會變成 FileSystem,而無法在 Eclipse 中使用),後來發現原來 EGit 有自己的 Perspective,包含了平常 Git 的常用功能(參考資料3),有用 Eclipse 開發過的話對這應該不陌生,像是 JavaEE, DDMS, JavaSE … 等等,只要切換到該 Perspective 裡面有就一些常用的 View 的組合。
在 Eclipse 右上角找到一個 Open Perspective 的圖案(看起來像一個視窗跟一個+符號,如下圖),選擇 Open Perspective 視窗中的 Git Repository Exploring

在開啟的 Git Repository Exploring Perspective 中,左邊的 Git Repositories 視窗中可以看到以下畫面, 選擇 Clone a Git repository 來匯入遠端已經存在的 repository。

接著輸入遠端 repository 的連線資訊。直接填寫 URI 以外的欄位,URI 欄位會根據填寫的內容自動產生。

選擇要匯入的 Branch。

選擇要存放的路徑。

開始下載 repository 的檔案。

完成後在 Git Repositories 視窗中可以看到所有 Git Repository 的資訊及檔案。

  • 將 Git Repository 中的檔案匯入成 Project

在這邊其實卡了很久,因為當時沒發現有 Git Repository Exploring Perspective,造成例如檔案會重複存在,無法 commit,無法匯入,提示目錄已存在等等的錯誤。Git Repository Exploring Perspective 也讓這些事情變得很簡單。首先在 Git Repositories 視窗中剛剛新增的 repository 點選滑鼠右鍵,選擇 Import Projects …

選擇最下面的 Import as general project

做最後確認。

完成後,到右上角的 Perspective 切換到 PHP

PHP Explorer 視窗中看到剛剛匯入的專案,每個檔案及資料夾右下方有一個黃黃的東西。

因為剛剛從 Git Repository 轉換成 general project(一般專案),現在要把這整個專案轉換成 PHP 專案。在專案上點選滑鼠右鍵 -> Configure -> Add PHP Support …

可以看到專案最下面已經加入了 PHP Libraries,到這邊基本的 Eclipse 開發 PHP 程式已經大功告成。

大費周章的用 Eclipse 開發的原因在於有時候變數或是 function 分散在一堆不同的檔案中,不僅除錯容易,在 trace 程式碼或是開發速度上都會有很明顯的幫助。例如:
點選 ctrl 後指向 function name 或變數,就會直接開啟該 function 或該變數所在的檔案。

function 名稱或變數也有自動補齊的功能(懶人專用)。

游標停留在 function 或變數上不動,會出現該變數或 function 說明。

至於其他 Git 操作,之後有需要再補上!
參考資料:

  1. Setting up Eclipse @ Moodle
    http://docs.moodle.org/dev/Setting_up_Eclipse
  2. Eclipse – 打造一個可以帶著走的 PHP IDE @ 莫希爾(Mosil)手札
    http://blog.mosil.biz/2012/07/eclipse-protable-ide-for-php/
  3. How to import a GIT non-Eclipse Java project into Eclipse? @ stackoverflow
    http://blog.mosil.biz/2012/07/eclipse-protable-ide-for-php/

5 個回應

  1. 阿嘉表示:

    感謝大大分享!是篇好文,入門開原世界鑰匙

  2. Evan Li表示:

    請問蛙大:
    安裝plugins時,JavaScript Development Tools 和 PHP Development Tools (PDT) SDK Feature 都沒問題,但安裝Eclipse Web Developer Tools,就會出現下列問題,這有得解嗎?
    另外,網路上有人介紹PDT這套?不知道你覺得如何呢?
    Cannot complete the install because of a conflicting dependency.
    Software being installed: Eclipse Web Developer Tools 3.4.1.v201208170345-7O7MFsPEMkBJz0wtb-ccsarPSceUIHO9iKk6XVPV (org.eclipse.wst.web_ui.feature.feature.group 3.4.1.v201208170345-7O7MFsPEMkBJz0wtb-ccsarPSceUIHO9iKk6XVPV)
    Software currently installed: Eclipse SDK 3.7.2.M20120208-0800 (org.eclipse.sdk.ide 3.7.2.M20120208-0800)
    Only one of the following can be installed at once:
    Core Resource Management 3.8.0.v20120522-2034 (org.eclipse.core.resources 3.8.0.v20120522-2034)
    Core Resource Management 3.8.1.v20120802-154922 (org.eclipse.core.resources 3.8.1.v20120802-154922)
    Core Resource Management 3.7.101.v20120125-1505 (org.eclipse.core.resources 3.7.101.v20120125-1505)
    Core Resource Management 3.7.100.v20110510-0712 (org.eclipse.core.resources 3.7.100.v20110510-0712)
    Cannot satisfy dependency:
    From: Eclipse Platform 3.7.2.v20120207-1839-9gF7UHPDFxGjd-PqDr2jX_4yKaumkoHTz04_q-q (org.eclipse.platform.feature.group 3.7.2.v20120207-1839-9gF7UHPDFxGjd-PqDr2jX_4yKaumkoHTz04_q-q)
    To: org.eclipse.core.resources [3.7.101.v20120125-1505]
    Cannot satisfy dependency:
    From: Eclipse Project SDK 3.7.2.r37x_v20111213-7Q7xALDPb32vCjY6UACVPdFTz-icPtJkUadz0lMmk4z-8 (org.eclipse.sdk.feature.group 3.7.2.r37x_v20111213-7Q7xALDPb32vCjY6UACVPdFTz-icPtJkUadz0lMmk4z-8)
    To: org.eclipse.platform.feature.group [3.7.2.v20120207-1839-9gF7UHPDFxGjd-PqDr2jX_4yKaumkoHTz04_q-q]
    Cannot satisfy dependency:
    From: Eclipse SDK 3.7.2.M20120208-0800 (org.eclipse.sdk.ide 3.7.2.M20120208-0800)
    To: org.eclipse.sdk.feature.group [3.7.2.r37x_v20111213-7Q7xALDPb32vCjY6UACVPdFTz-icPtJkUadz0lMmk4z-8]
    Cannot satisfy dependency:
    From: Eclipse Web Developer Tools 3.4.1.v201208170345-7O7MFsPEMkBJz0wtb-ccsarPSceUIHO9iKk6XVPV (org.eclipse.wst.web_ui.feature.feature.group 3.4.1.v201208170345-7O7MFsPEMkBJz0wtb-ccsarPSceUIHO9iKk6XVPV)
    To: org.eclipse.wst.xml_ui.feature.feature.group [3.4.1.v201208170345-7H7GFeFDxumUpsw5rgjWnKDrsz0p4ymwjQz00T2S]
    Cannot satisfy dependency:
    From: WST XML Core 3.4.1.v201208170345-7C7OFm5F7RZHQRIsOz-Nz-_n (org.eclipse.wst.xml_core.feature.feature.group 3.4.1.v201208170345-7C7OFm5F7RZHQRIsOz-Nz-_n)
    To: org.eclipse.wst.xsd.core [1.1.700.v201204102147]
    Cannot satisfy dependency:
    From: Eclipse XML Editors and Tools 3.4.1.v201208170345-7H7GFeFDxumUpsw5rgjWnKDrsz0p4ymwjQz00T2S (org.eclipse.wst.xml_ui.feature.feature.group 3.4.1.v201208170345-7H7GFeFDxumUpsw5rgjWnKDrsz0p4ymwjQz00T2S)
    To: org.eclipse.wst.xml_core.feature.feature.group [3.4.1.v201208170345-7C7OFm5F7RZHQRIsOz-Nz-_n]
    Cannot satisfy dependency:
    From: XSD Core Plugin 1.1.700.v201204102147 (org.eclipse.wst.xsd.core 1.1.700.v201204102147)
    To: bundle org.eclipse.core.resources [3.8.0,4.0.0)

    • Hans表示:

      Dear Evan Li:
      從錯誤訊息看起來應該是在之前已經透過別的方式安裝了更新版的 Plugin 了,
      下載回來的版本是 3.4.1 ,但是跟系統既有的 plugin 互相衝突,
      比較好的方法是重新下載一個乾淨的 Classic Eclipse 來安裝,
      像是如果要開發 Java 跟 PHP,分別下載兩個 Eclipse !!
      (沒辦法 Eclipse 太容易因為一些怪怪的因素打不開,或甚至變得很肥大)
      抱歉,沒辦法幫您解決 plugin 衝突的問題 ><

    • Hans表示:

      問題釐清,Work with: Juno – http://download.eclipse.org/releases/juno (註1)
      這邊要把後面的 juno 改成自己的版本喔,像是 helios, indigo … 等等!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料