在 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!。」
<?php
echo "Hello, World!";
?>
不得不說,當時我真的覺得這沒什麼特別的,畢竟之前寫過 C 語言的 printf
,所以覺得 PHP 的 echo
其實跟 printf
沒啥差別,但真正讓我眼睛一亮的,是老師接下來的介紹。
「PHP 是一種伺服器端的腳本語言,可以嵌入到 HTML 中,還能和資料庫互動。」老師一邊解說語法,一邊現場敲範例程式碼。
而我坐在台下心裡默默想著:
「咦?程式還能跟資料庫對話?這也太酷了吧!」
<!DOCTYPE html>
<html lang="zh-Hant-TW">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>第一個 PHP 程式</title>
</head>
<body>
<?php
$username = "admin";
$password = "password123";
$connection = mysqli_connect("localhost", $username, $password);
if ($connection) {
echo "<div>成功連接到 MySQL 資料庫!</div>";
} else {
echo "<div>無法連接到 MySQL 資料庫!</div>";
}
mysqli_close($connection);
?>
</body>
</html>
「這段程式碼會連接到 MySQL 資料庫,並且輸出連接成功或失敗的訊息。」老師解釋道。
沒錯,這就是我第一次接觸 PHP 的契機,沒想到吧?
當時我覺得 PHP 超厲害,不只可以直接跟資料庫互動,還能嵌入到 HTML 中,重點是能即時把結果呈現在畫面上,甚至還能跟使用者互動。
相比之下,C 語言就顯得有些單調,頂多就是在黑底白字的視窗裡輸出幾行文字,完全沒有什麼成就感。
也因為這個契機,我決定請這位老師擔任我的專題指導老師,從那一刻起,我正式踏上了專題製作之路。
專題成品算是順利出爐,也拿到很好成績,甚至被系上點名想拿去當招生教材範本,但過程真的是滿滿血淚。
程式過程慘,但團隊合作更慘,我的組員們,擺爛、不合群、狀況外一堆,組員 5 人,但真正在做的只有 2 人(說真的,Debug 比吵架容易多了 XD)。
更別提那位嚴格到爆的指導老師,雖然把我磨得更強,可是壓力也大到快得心理陰影。
只能說 —— 專題結束時交出去的不只是作品,還有我的半條命 XD。
PHP 本身就是為了網頁程式開發而設計的語言,對一般程式設計師來說,相對來講是很容易快速上手的,為什麼這麼說呢?
讓我們來看一下幾個基本的 PHP 語法:
<?php
// 宣告變數
$name = "Ray";
$age = 30;
// 輸出變數
echo "我的名字是 $name,我的年齡是 $age 歲。";
// 條件判斷
if ($age >= 18) {
echo "我已經成年了。";
} else {
echo "我還未成年。";
}
// 迴圈
for ($i = 0; $i < 5; $i++) {
echo "這是第 $i 次迴圈。";
}
// 陣列
$fruits = array("蘋果", "香蕉", "橘子");
foreach ($fruits as $fruit) {
echo "我喜歡吃 $fruit。";
}
// 函式
function greet($name) {
return "你好,$name!";
}
echo greet("Ray");
// 物件導向
class Person {
public $name;
public $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function introduce() {
return "我的名字是 $this->name,我的年齡是 $this->age 歲。";
}
}
$person = new Person("Ray", 30);
echo $person->introduce();
// 例外處理
try {
$result = 10 / 0; // 這會引發除以零
} catch (DivisionByZeroError $e) {
echo "錯誤:除以零!";
} finally {
echo "這是 finally 區塊,無論如何都會執行。";
}
?>
Note
DivisionByZeroError
是 PHP 7 之後才有的例外類別,早期版本會直接拋出 Warning。
如果你是從前一篇接著看到這篇,應該會發現 PHP 的語法相較於 C 語言真的容易理解,也相當直觀,而且在語法裡,你還能看出一些和其他語言相似的影子 —— 畢竟 PHP 本身就有參考 C、Perl、Java 等語言的設計,所以只要你曾經接觸過其他程式語言,基本上都能很快上手。
再加上 PHP 可以直接連接 MySQL 資料庫,這對於開發網頁應用程式來說是非常重要的功能。下面的範例則展示了較新式的 MySQLi 連接方式:
<?php
// 連接到 MySQL 資料庫
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "my_database";
$conn = new mysqli($servername, $username, $password, $dbname);
// 檢查連接是否成功
if ($conn->connect_error) {
die("連接失敗: " . $conn->connect_error);
}
// 執行 SQL 查詢
$sql = "SELECT id, name FROM users";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 輸出每一行資料
while($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"]. " - Name: " . $row["name"]. "<br>";
}
} else {
echo "0 結果";
}
// 關閉連接
$conn->close();
?>
這段程式碼展示了如何連接到 MySQL 資料庫,並執行一個簡單的 SQL 查詢,然後輸出查詢結果。
前面也有示範過 PHP 也可以嵌入到 HTML 中,這讓 PHP 成為一個非常適合用來開發網頁應用程式的語言。
<!DOCTYPE html>
<html lang="zh-Hant-TW">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>我的第一個 PHP 網頁</title>
</head>
<body>
<h1>歡迎來到我的 PHP 網頁!</h1>
<p>這是一個簡單的 PHP 範例。</p>
<?php
echo "<p>今天的日期是 " . date("Y-m-d") . "。</p>";
?>
</body>
</html>
這段程式碼展示了如何在 HTML 中嵌入 PHP 程式碼,並輸出當前日期,這讓我們可以在網頁上動態地顯示內容,但這邊要強調一件事情,PHP 的副檔案名稱是 .php
,而不是 .html
,這是因為 PHP 程式碼需要在伺服器端執行編譯後,再將結果(HTML)傳送到瀏覽器。
所以早期的網頁開發在切換頁面時,都會有一段「空白」的瞬間閃爍畫面,這是因為當你送出了請求時,PHP 會需要將 .php
檔案中的 PHP 程式碼執行完畢,然後再將結果轉換成 HTML 傳送到瀏覽器,這個過程會有一點延遲。
這也是為什麼後來出現了 AJAX 技術,可以讓我們在不重新載入整個頁面的情況下,動態地更新網頁內容。
那麼大家可能都會好奇,為什麼 PHP 會如此流行與受歡迎,其中有幾個原因:
每個程式語言都有它的優缺點,PHP 也不意外,只是我認為...
「並不是 PHP 本身不好,而是太過於『容易被用的不好』。」
這是我對 PHP 的一個總結。
前陣子回頭看了一下自己當初寫的專題,整個就是黑歷史,程式碼寫得亂七八糟,完全沒有結構可言,甚至還有一堆 SQL Injection 的漏洞,真的是慘不忍睹啊~~~
本文將同步更新至以下網站: