PHP - 封裝

封裝是面向對象編程(OOP)的基本原則之一。它指的是將數據與操作這些數據的方法綁定在一起。在PHP中,可以使用類和訪問修飾符如public、private和protected來實現封裝。這個教程將指導您學習PHP中封裝的基本知識,從public成員開始,然後轉向private成員,最後涵蓋protected成員。

PHP - Encapsulation

Public 成員

Public 成員從類內部和外部都可以訪問。它們使用 public 關鍵字聲明。以下是一個具有public成員的簡單類的例子:

class Car {
public $color;

public function setColor($color) {
$this->color = $color;
}

public function getColor() {
return $this->color;
}
}

$myCar = new Car();
$myCar->setColor("red");
echo "My car is " . $myCar->getColor() . "."; // 輸出:My car is red.

在這個例子中,我們有一個 Car 類,其中有一個public屬性 $color 和兩個public方法 setColor()getColor()。我們可以從類外部輕鬆地設定和獲取汽車的顏色。

Private 成員

Private 成員只能在定義它的類內部訪問。它們使用 private 關鍵字聲明。以下是一個具有private成員的類的例子:

class BankAccount {
private $balance;

public function __construct($initialBalance) {
$this->balance = $initialBalance;
}

public function deposit($amount) {
if ($amount > 0) {
$this->balance += $amount;
}
}

public function getBalance() {
return $this->balance;
}
}

$myAccount = new BankAccount(100);
$myAccount->deposit(50);
echo "My account balance is " . $myAccount->getBalance() . "."; // 輸出:My account balance is 150.

在這個例子中,我們有一個 BankAccount 類,其中有一個private屬性 $balance 和兩個public方法 deposit()getBalance()$balance 屬性不能從類外部直接訪問,但我們可以使用 deposit() 方法操作它,並使用 getBalance() 方法獲取其值。

Protected 成員

Protected 成員在定義它的類以及任何子類中都可以訪問。它們使用 protected 關鍵字聲明。以下是一個具有protected成員的類的例子:

class Animal {
protected $name;

public function __construct($name) {
$this->name = $name;
}
}

class Dog extends Animal {
public function bark() {
echo "Woof! I am " . $this->name . ".";
}
}

$myDog = new Dog("Buddy");
$myDog->bark(); // 輸出:Woof! I am Buddy.

在這個例子中,我們有一個 Animal 類,其中有一個protected屬性 $nameDog 類繼承自 Animal 類,並可以訪問 $name 屬性,因為它是protected的。我們可以在 Dog 類中使用 $name 屬性來實現 bark() 方法。

結論

封裝是OOP中的一個關鍵概念,它通過限制直接訪問來幫助維護數據的完整性。通過使用訪問修飾符如public、private和protected,您可以控制數據的訪問和修改方式。理解封裝將幫助您在PHP和其他OOP語言中編寫更健壯且可維護的代碼。

Credits: Image by storyset