PHP - 封裝
封裝是面向對象編程(OOP)的基本原則之一。它指的是將數據與操作這些數據的方法綁定在一起。在PHP中,可以使用類和訪問修飾符如public、private和protected來實現封裝。這個教程將指導您學習PHP中封裝的基本知識,從public成員開始,然後轉向private成員,最後涵蓋protected成員。
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屬性 $name
。Dog
類繼承自 Animal
類,並可以訪問 $name
屬性,因為它是protected的。我們可以在 Dog
類中使用 $name
屬性來實現 bark()
方法。
結論
封裝是OOP中的一個關鍵概念,它通過限制直接訪問來幫助維護數據的完整性。通過使用訪問修飾符如public、private和protected,您可以控制數據的訪問和修改方式。理解封裝將幫助您在PHP和其他OOP語言中編寫更健壯且可維護的代碼。
Credits: Image by storyset