出社會這些年寫過的程式語言也算不少,第一份工作就是 Oracle / D2K / Form 6i,用過的人都說讚!這玩意寫 Oracle 資料庫交易功能簡直是神器,寫一支具備新增修改刪除加上各欄位查詢功能的表單,只需要用滑鼠拉一拉就完成了,一行程式碼都不用寫。早期就曾經有人靠 Oracle / D2K 開發工具,大肆宣稱半年內寫出五百多支程式,績效斐然,因此踹下其他競爭者,成功搏得上市電子廠高階經理人上位,超越顛峰,掙得每年數百張配股分紅,該人最著名口頭禪「一天賣一張,一年也賣不完」,在電子業與軟體業界成為經典的傳奇故事(知道我在講誰的,請勿對號入座)。由此可知,碼農們選對開發工具是非常重要的事,甚至有機會翻轉身人生,賺進大把鈔票... 扯遠了,後來換了幾次工作,用 Visual Studio 寫 ASP.NET,用 Xcode 寫 Object-C,特定的程式語言用特定的開發工具,做出一整套完整功能的應用程式專案,似乎是理所當然的事。

然而在江湖上卻不一定事事都理所當然。比如 PHP 這玩意,很多年前就接觸了,功力一直以來都是寫幾隻小程式、做幾件小事的程度。原因是很久以前忘了在哪個網站上看到一句話:PHP 要用文字編輯器來寫。於是種下了開發 PHP 方法的錯誤認知。

最近手邊有個專案,對我來說, VS 寫後端, Xcode 寫前端,輕鬆達陣不難, 但是要改用 HTML5 + CSS3 + jQuery + PHP 來寫,這就令我開始頭疼了。

用文字編輯器撰寫 HTML5 + CSS3 + jQuery + PHP 程式,開發出專案級別的功能,可行嗎?對資質愚笨的小弟我來說,幾乎不可行!我需要一套如同 D2K / Visual Studio / Xcode 那種強大的開發工具來撰寫 PHP 程式。

於是我開始求助 Google 大神,甚至上網 PTT 徵求技術交流 / 技術交換討論等,最後選擇了 Brackets +PHP 外掛來開發。Brackets 功能強大,但那是指前端而言,撰寫 PHP 後端則顯得十分雞肋,試了各種外掛,頂多只會提示 PHP 的內建指令,無法偵錯,寫起 PHP 還是舉步艱難。隨著程式碼越來越多,感覺越來越吃力,覺得自己沒有用對方法。

最終讓我用對了關鍵字,找到我認為最適合的 PHP 開發工具:

PHPStorm

用過 PHPStorm 寫 HTML5 + CSS3 + jQuery + PHP 之後,就回不去了。那些推薦「Sublime Text + 外掛」的,推薦「Notepad++」的,推薦「PE2」的,那是給開發神人在用的。對於習慣使用 IDE 工具管理中大型專案的凡人來說,「神建議」恐有令人誤入歧途的危險。

PHPStorm 建置 PHP 專案是一件輕鬆愉快的事。PHPStorm 功能相當強大,但不一定全都用得上。這篇文章要講的是,如何用 PHPStorm 搭配 Xdebug 套件,做到真正的 Break point 功能:也就是開發工具常見且好用的斷點功能,因為剛查了一下,這部分的中文介紹乏善可陳,大多是對岸的文章,且似乎都引用於同一個不可考的來源,操作步驟跟內容雜亂,其實根本沒那麼複雜。

以下從無到有的過程,先簡單帶過一遍。Windows /macOS / Ubuntu 環境皆適用。

1. 下載並安裝 Xampp:畢其功於一役,Xampp 能一次將 Apache2 + PHP + MySQL 的開發環境建置起來。就不用一個一個安裝建立,節省大量時間。安裝 Xampp 的操作步驟在此略過不提。

2. 下載並安裝 Xdebug:最簡單的方式是,在第一步驟完成後,寫一個最簡單的 php 網頁:

<?php phpinfo(); ?>

執行之後把整個網頁的內容全選複製,貼到底下這個網頁

https://xdebug.org/wizard.php

接著按下最底下的按鈕「Analyse my phpinfo() output」:

後續的網頁就會教你怎麼安裝 Xdebug,照著做就行了。

補充一提,macOS 10.15 Catalina 在編譯 Xdebug 時「可能」會出現找不到 php.h 的問題,原因是從 macOS 10.15 開始,官方移除了以往慣用的 /usr/include 標頭檔。若是在本機安裝 XAMPP 作為開發使用,可在 ~/.bash_profile 加上一行路徑:

export PATH=/Applications/XAMPP/xamppfiles/bin:$PATH

強迫使用 XAMPP 內的函式庫,然後編譯 Xdebug (phpize -> ./configure -> make)就不會有問題了。編譯安裝完 Xdebug 之後務必記得把該行標記,避免日後編譯其他項目時發生問題。

3. 修改Xampp 裡面的 php.ini (通常在 etc 目錄下),加上「xdebug.remote_enable = 1」與「xdebug.remote_port = 9000」兩行

若 Xdebug 為 3.x + 版,參數需改為「xdebug.mode = debug」與「xdebug.client_port = 9000」。

重啟 Apache2,再跑一次 phpinfo,如果 Xdebug 安裝成功,phpinfo 的內容會顯示「with Xdebug vx.x.x」字樣:

4. 瀏覽器安裝 Xdebug 延伸功能套件:以 Chrome 為例,安裝網址

Xdebug Helper

然後在「選項」內設定 sessionkey 的值

5. 回到 PHPStorm 的安裝與操作部分。安裝 PHPStorm 的步驟在此略過不提。引入 PHP 專案之後,再加上幾個設定就行了。不過不同作業系統的選單位置稍有不同,以下以 macOS 為例:

PHPStorm -> Preferences -> Languages & Frameworks -> PHP -> Servers

按 + 新增,填入如下圖對應的值,按 Apply -> OK生效。

PHPStorm -> Preferences -> Languages & Frameworks -> PHP -> Debug 檢查 Port 號。預設值是 9000,需與上述 Xdebug 設定值「xdebug.remote_port = 9000」(2.x 版)或「xdebug.client_port = 9000」(3.x 版)對應。

PHPStorm_Debug.png

接著注意右上角有個「Add Configuration...」小方框,右邊有個紅綠的小圖示

紅綠圖示點擊成全部都綠色

接著點擊 「Add Configuration...」

左上角有個 + 號,點擊一下新增,下拉到「PHP Web Page」項目

Name 隨便取一個名字, Server 下拉選擇一開始建立的伺服器設定( Server -> localhost),按 Apply -> OK 即可。

這樣就完成了 Xdebug 的斷點追蹤設定。

7. 測試:

開啟 php 專案之後,在預期會執行的程式中隨便找一行程式,設定一個斷點(如下圖的 22 數字右邊空白處點擊一下則出現紅點,即設定完成),然後點擊右上的蟲符號

操作 PHP 網頁,讓程式跑到斷點這一行。

如上圖,PHP 程式會停在這一行,並且會顯示執行到這一行之後,每一個變數的內容值。

最神奇的的是支援自訂類別的變數。滑鼠移動到變數上,展開後變數內容都能全部顯示出來。

如此一來,開發 PHP 就如同使用熟悉的 Visual Studio / Xcode 的開發環境一樣方便,那些「Notepad++ 開發 PHP」 ,「記事本開發 PHP」,留給神人去做就好了。

說到底,不少技術心得的分享文章,遭到去頭尾再流到垃圾農場散播出去,或是作者分享給同水準讀者時加入反串梗,只是沒說清楚這些情況時,反而造成新手增加學習負擔,甚至多繞了幾年遠路。不論如何,我的 PHP 這條路,繞了很多年之後,如今也算是繞回正路了。

繼續閱讀:使用 Visual Studio Code 抓 PHP 臭蟲

 
arrow
arrow

    benjenq 發表在 痞客邦 留言(0) 人氣()