Инкапсуляция - не просто сокрытие данных (это лишь один аспект). Это объединение данных и методов работы с ними в единый блок с контролируемым доступом:
class BankAccount {
private float $balance = 0;
public function deposit(float $amount): void {
if ($amount <= 0) throw new InvalidArgumentException();
$this->balance += $amount;
}
public function withdraw(float $amount): void {
if ($amount > $this->balance) throw new InsufficientFundsException();
$this->balance -= $amount;
}
public function getBalance(): float {
return $this->balance;
}
}Ключевой смысл: класс гарантирует свои инварианты. Нельзя установить отрицательный баланс, потому что доступ к $balance только через методы с валидацией.