TGViewer
PHP | Вопросы собесов PHP | Вопросы собесов @easy_php_ru · 2.31K subscribers
Post #2304 385
🤔 Что такое инкапсуляция?

Инкапсуляция — это один из основных принципов ООП. Она представляет собой механизм, позволяющий скрыть внутренние детали объекта и предоставлять доступ к данным и методам объекта только через определенные интерфейсы. Это помогает защитить данные от некорректного использования и обеспечивает контроль над изменением состояния объекта.

🚩Основные аспекты

🟠Сокрытие данных
Инкапсуляция позволяет скрыть внутреннее состояние объекта от внешнего мира. Данные объекта становятся доступными только через методы, предоставленные самим объектом.
🟠Контроль доступа
Внутренние данные и методы объекта могут быть объявлены как приватные (private) или защищенные (protected), что предотвращает их прямой доступ из кода вне объекта. Публичные методы (public) используются для взаимодействия с объектом.
🟠Целостность данных
Поскольку доступ к данным осуществляется через методы, можно контролировать и проверять изменения состояния объекта, что помогает поддерживать его целостность и корректность.

class User {
// Приватные свойства
private $name;
private $email;

// Конструктор для инициализации свойств
public function __construct($name, $email) {
$this->setName($name);
$this->setEmail($email);
}

// Публичный метод для получения имени
public function getName() {
return $this->name;
}

// Публичный метод для установки имени
public function setName($name) {
if (!empty($name)) {
$this->name = $name;
} else {
throw new Exception("Name cannot be empty");
}
}

// Публичный метод для получения email
public function getEmail() {
return $this->email;
}

// Публичный метод для установки email
public function setEmail($email) {
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
$this->email = $email;
} else {
throw new Exception("Invalid email address");
}
}
}

// Создание объекта пользователя
$user = new User("John Doe", "john.doe@example.com");

// Получение и изменение данных через публичные методы
echo $user->getName(); // John Doe
$user->setEmail("new.email@example.com");
echo $user->getEmail(); // new.email@example.com

// Прямой доступ к приватным свойствам вызовет ошибку
// $user->name = "Jane"; // Ошибка


Ставь 👍 и забирай 📚 Базу знаний
More from @easy_php_ru
  1. Oct 11, 2026🤔 Для чего нужен middleware? Middleware — это промежуточный слой между запросом клиента и…
  2. Oct 11, 2026🤔 Что такое декремент? декремент — это операция, используемые для увеличения или уменьшен…
  3. Oct 10, 2026🤔 Что такое агрегатные функции? Агрегатные функции в SQL и других языках обработки данных…
  4. Oct 9, 2026🤔 Как настроить autoload через Composer? Composer предоставляет механизм автоматической з…
  5. Oct 9, 2026🤔 Какое отличие у протоколов tcp и udp? Это два основных транспортных протокола в интерне…
  6. Oct 8, 2026🤔 Есть ли какое-то различие между одинарными и двойными кавычками? - В большинстве языков…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →