PHP - Инкапсуляция

Инкапсуляция является одним из основных принципов объектно-ориентированного программирования (OOP). Она refers к bundling данных с методами, которые operate на этих данных. В PHP, инкапсуляция может быть достигнута с использованием классов и модификаторов доступа, таких как public, private и protected. Этот учебник проведет вас через основы инкапсуляции в PHP, начиная с public членов, затем переходя к private членам и, наконец, рассматривая protected членов.

PHP - Encapsulation

Public Члены

Public члены доступны из anywhere, как внутри, так и خارج класса. Они объявляются с использованием ключевого слова 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(). Мы можем легко установить и получить цвет автомобиля из outside класса.

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 не доступно напрямую из outside класса, но мы можем манипулировать им с помощью метода deposit() и retrieving его значения с помощью метода 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 extends класс Animal и имеет доступ к свойству $name, так как оно protected. Мы можем использовать свойство $name внутри класса Dog для реализации метода bark().

Заключение

Инкапсуляция является важным концептом в OOP, который помогает поддерживать целостность данных, ограничивая к ним прямой доступ. Используя модификаторы доступа, такие как public, private и protected, вы можете контролировать, как ваши данные accessed и modified. Понимание инкапсуляции поможет вам писать более надежный и maintainable код в PHP и других OOP языках.

Credits: Image by storyset