PHP 5 起完整支援物件導向程式設計。本教學以「桌子」為隱喻,由淺入深講解類別定義、成員屬性/方法、實例化、$this 指標、建構子與參數化建構,適合從程序式思維轉向 OOP 的開發者。
<?php
class Desk {
// 成員屬性 (特徵)
public $surfaceArea; // 桌面大小
public $legCount; // 桌腳數量
// 成員方法 (行為)
public function move() {
echo "桌子移動中...<br>";
}
public function enlargeSurface() {
$this->surfaceArea++;
echo "桌面放大至 {$this->surfaceArea}<br>";
}
}
?>
$myDesk = new Desk(); // 建立實例
$myDesk->surfaceArea = 100; // 設定屬性
$myDesk->enlargeSurface(); // 呼叫方法:輸出 "桌面放大至 101"
$yourDesk = new Desk(); // 另一個獨立實例
$yourDesk->surfaceArea = 80;
// $myDesk 與 $yourDesk 互不干擾
$this 代表「正在執行此方法的那個具體實例」。$myDesk->enlargeSurface() 執行時,方法內的 $this 即指向 $myDesk。static) 中不可用 $this (無實例上下文)。__construct():初始化儀式PHP 5 推薦使用 __construct() (雙底線);舊式同名方法 (如 function Desk()) 在 PHP 7+ 已棄用、PHP 8 移除。
class Desk {
public $surfaceArea;
public $legCount;
public function __construct(int $area = 100, int $legs = 4) {
$this->surfaceArea = $area;
$this->legCount = $legs;
echo "新桌子誕生:面積 {$area}、腳數 {$legs}<br>";
}
public function enlargeSurface() {
$this->surfaceArea++;
}
}
$desk1 = new Desk(); // 使用預設值 100, 4
$desk2 = new Desk(120, 6); // 自訂初始值
// 建構子在 new 瞬間自動執行,無需手動呼叫
| 關鍵字 | 存取範圍 |
|---|---|
public | 任意處存取 |
protected | 類別內部 + 子類別 |
private | 僅類別內部 |