整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ
【Day 23】PHP?蛤?一隻大象?

PHP?蛤?一隻大象?
在 C 語言的戰場上,我曾經被指標這個最終 Boss 打得落花流水,只能無奈退場。那段日子裡,我幾乎放下程式,只偶爾靠寫些遊戲腳本來刷一點存在感。
直到大學時期,我重新踏上程式這條路,而這次迎接我的,不再是讓我頭痛的指標,來了一位新的夥伴 —— PHP: Hypertext Preprocessor(PHP:超文本預處理器)。
為什麼會突然又接觸程式語言呢?
因為當初選擇了資訊管理系,而此系畢業條件之一就是 「專題製作」 ,說實話,剛聽到的時候,心理壓力很大,畢竟要獨立做出一個完整作品,聽起來就不是件簡單的事。
但在接觸到 PHP 課程時,我發現做 Web Application(網頁應用程式) 不僅有趣,還能立即看到畫面變化,對當時的我來說特別新鮮。
當時有一門叫做「程式語言設計」的大一必修課。授課老師相當嚴格,但不得不說,他的教學非常扎實,也正是他,成為了把我正式帶入程式設計世界的啟蒙老師。
「來!今天我們要上的課叫做『網頁程式設計』,在這門課裡,大家要用一個程式語言來完成一個簡單的網頁應用程式。」老師一邊說一邊在白板上寫下那幾個字母:PHP,以及它的全名。
你可能會想:「大學電腦課的你,應該還是在打遊戲吧?」抱歉,這次你猜錯了。因為大學開始後我很快就發現 —— 在電腦課偷打遊戲,輸的可不只是分數,還可能是未來。
所以我乖乖收起遊戲,開始認真聽課,不然就等著被當掉 QQ。
Note
大學的必修課程如果被當掉的話,就必須要花時間、金錢重修,而且也會延後畢業時間。
「大家先安裝 XAMPP,因為我們接下來要用 Apache 伺服器來執行 PHP 程式碼。」老師邊操作邊解說。
「XAMPP 是一個跨平台的網頁伺服器套件,裡面包含了 Apache、MySQL、PHP 和 Perl 等組件。」
接著他又說:「再打開 phpDesigner 8,這是一個專門用來編輯 PHP 程式碼的開發工具。」
對我來說,這是第一次接觸專門的 IDE,畢竟以前寫程式時都還在用 Notepad++ 或純文字編輯器(有點年代感)。
最後老師示範:「現在我們來寫一個簡單的 PHP 程式,讓它在瀏覽器輸出 Hello, World!。」
1 | |
不得不說,當時我真的覺得這沒什麼特別的,畢竟之前寫過 C 語言的 printf ,所以覺得 PHP 的 echo 其實跟 printf 沒啥差別,但真正讓我眼睛一亮的,是老師接下來的介紹。
「PHP 是一種伺服器端的腳本語言,可以嵌入到 HTML 中,還能和資料庫互動。」老師一邊解說語法,一邊現場敲範例程式碼。
而我坐在台下心裡默默想著:
「咦?程式還能跟資料庫對話?這也太酷了吧!」
1 | |
「這段程式碼會連接到 MySQL 資料庫,並且輸出連接成功或失敗的訊息。」老師解釋道。
沒錯,這就是我第一次接觸 PHP 的契機,沒想到吧?
當時我覺得 PHP 超厲害,不只可以直接跟資料庫互動,還能嵌入到 HTML 中,重點是能即時把結果呈現在畫面上,甚至還能跟使用者互動。
相比之下,C 語言就顯得有些單調,頂多就是在黑底白字的視窗裡輸出幾行文字,完全沒有什麼成就感。
也因為這個契機,我決定請這位老師擔任我的專題指導老師,從那一刻起,我正式踏上了專題製作之路。
專題成品算是順利出爐,也拿到很好成績,甚至被系上點名想拿去當招生教材範本,但過程真的是滿滿血淚。
程式過程慘,但團隊合作更慘,我的組員們,擺爛、不合群、狀況外一堆,組員 5 人,但真正在做的只有 2 人(說真的,Debug 比吵架容易多了 XD)。
更別提那位嚴格到爆的指導老師,雖然把我磨得更強,可是壓力也大到快得心理陰影。
只能說 —— 專題結束時交出去的不只是作品,還有我的半條命 XD。

PHP 專為網頁設計而生的語言
PHP 本身就是為了網頁程式開發而設計的語言,對一般程式設計師來說,相對來講是很容易快速上手的,為什麼這麼說呢?
讓我們來看一下幾個基本的 PHP 語法:
1 | |
Note
DivisionByZeroError是 PHP 7 之後才有的例外類別,早期版本會直接拋出 Warning。
如果你是從前一篇接著看到這篇,應該會發現 PHP 的語法相較於 C 語言真的容易理解,也相當直觀,而且在語法裡,你還能看出一些和其他語言相似的影子 —— 畢竟 PHP 本身就有參考 C、Perl、Java 等語言的設計,所以只要你曾經接觸過其他程式語言,基本上都能很快上手。
再加上 PHP 可以直接連接 MySQL 資料庫,這對於開發網頁應用程式來說是非常重要的功能。下面的範例則展示了較新式的 MySQLi 連接方式:
1 | |
這段程式碼展示了如何連接到 MySQL 資料庫,並執行一個簡單的 SQL 查詢,然後輸出查詢結果。
前面也有示範過 PHP 也可以嵌入到 HTML 中,這讓 PHP 成為一個非常適合用來開發網頁應用程式的語言。
1 | |
這段程式碼展示了如何在 HTML 中嵌入 PHP 程式碼,並輸出當前日期,這讓我們可以在網頁上動態地顯示內容,但這邊要強調一件事情,PHP 的副檔案名稱是 .php,而不是 .html,這是因為 PHP 程式碼需要在伺服器端執行編譯後,再將結果(HTML)傳送到瀏覽器。
所以早期的網頁開發在切換頁面時,都會有一段「空白」的瞬間閃爍畫面,這是因為當你送出了請求時,PHP 會需要將 .php 檔案中的 PHP 程式碼執行完畢,然後再將結果轉換成 HTML 傳送到瀏覽器,這個過程會有一點延遲。
這也是為什麼後來出現了 AJAX 技術,可以讓我們在不重新載入整個頁面的情況下,動態地更新網頁內容。
那麼大家可能都會好奇,為什麼 PHP 會如此流行與受歡迎,其中有幾個原因:
- 簡單易學: PHP 的語法相對簡單,容易上手,特別是對於初學者來說。
- 開源免費: PHP 是一個開源的語言,對於某些企業來講,他們不需要付費昂貴的授權費用就可以使用 PHP 來開發網頁應用程式。
- 強大的社群支持: PHP 擁有一個龐大的社群(至少以我認知中,這個社群是非常活躍的)。
- 本身就是為了網頁開發而設計: PHP 的設計初衷就是為了網頁開發,所以它有很多內建的功能可以直接使用,例如與資料庫的連接、處理表單等。
每個程式語言都有它的優缺點,PHP 也不意外,只是我認為…
「並不是 PHP 本身不好,而是太過於『容易被用的不好』。」
這是我對 PHP 的一個總結。
結語
前陣子回頭看了一下自己當初寫的專題,整個就是黑歷史,程式碼寫得亂七八糟,完全沒有結構可言,甚至還有一堆 SQL Injection 的漏洞,真的是慘不忍睹啊~~~
同步更新
本文將同步更新至以下網站:
整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ