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