許多 PHP 開發者在初學階段,對「類」與「對象」的概念感到抽象難懂,甚至認為這是為了複雜而複雜的設計。實際上,**只要掌握了變量與函數這兩個基礎概念,理解類就不成問題**。類不僅是代碼組織單元,更是將現實世界業務邏輯映射到代碼的核心工具——它讓程序更直觀、更合理、更易維護。
類 = 屬性(變量)+ 行為(函數)的封裝集合。它描述一類事物的共同特徵與動作。
| 維度 | 對應代碼元素 | 具體例子 |
|---|---|---|
| 屬性(狀態/數據) | 成員變量(Properties) | $pedals(踏板)、$chain(鏈條)、$frontWheel(前輪)、$rearWheel(後輪)、$brakes(剎車)、$handle(手柄) |
| 行為(動作/邏輯) | 成員方法(Methods) | stop() 停車、accelerate() 加速、turnLeft() 左轉、turnRight() 右轉 |
有了 Bike 類,我們就能創建多個獨立的「自行車實例」(對象),每個實例擁有自己的屬性值(如顏色、齒輪數),卻共享同一套行為邏輯。例如:
<?php
class Bike {
public $color;
public $gear = 1;
public function __construct($color) {
$this->color = $color;
}
public function accelerate() {
$this->gear = min(7, $this->gear + 1);
echo "加速至檔位 {$this->gear}\n";
}
public function brake() {
$this->gear = max(1, $this->gear - 1);
echo "減速至檔位 {$this->gear}\n";
}
}
// 創建兩輛不同的自行車
$bike1 = new Bike('紅色');
$bike2 = new Bike('藍色');
$bike1->accelerate(); // 輸出:加速至檔位 2
$bike2->accelerate(); // 輸出:加速至檔位 2(互不干擾)
理解了類的基本概念與建模思維後,下一節將深入講解:
思考題:嘗試用類建模一個「銀行賬戶」,包含屬性(賬號、餘額、持卡人)與方法(存款、取款、查詢餘額、轉賬)。思考:餘額屬性應設為何種可見性?為什麼?