📘 Глава 18. Основы ООП в PHP: классы, свойства, методы, конструкторы
- 🧠 Что такое ООП
- 🔍 Почему ООП важно
- 🧱 Основные понятия ООП в PHP
- 1. Класс и объект
- 2. Свойства и методы
- 3. Конструктор (__construct)
- 4. Модификаторы доступа: public, protected, private
- 5. $this
- 🏗 Построим свой первый ООП-проект
- 🎯 Зачем использовать ООП в реальных проектах
- 🧩 Практика: создаём класс GuestbookEntry
- ✅ Что ты усвоил
- ⏭ Что дальше
🧠 Что такое ООП?
Объектно-ориентированное программирование (ООП) — это способ организации кода, при котором данные и действия над ними объединяются в объекты. Этот подход делает код:
-
структурированным и модульным,
-
легко читаемым и расширяемым,
-
удобным для командной разработки.
🔍 Почему ООП важно?
На начальных этапах можно обойтись простыми функциями, но по мере роста проекта появляется необходимость:
-
разделить логику на модули;
-
изолировать бизнес-логику от представления;
-
повторно использовать и расширять код;
-
тестировать и масштабировать проект.
ООП как раз решает эти задачи.
🧱 Основные понятия ООП в PHP
Давайте пошагово разберём каждую ключевую составляющую ООП на примерах.
1. Класс и объект
Класс — это «чертёж», по которому создаются объекты.
phpКопироватьРедактироватьclass Car {
public $brand;
public $color;
public function drive() {
echo "The $this->color $this->brand is driving.";
}
}
Создаём объект:
phpКопироватьРедактировать$myCar = new Car();
$myCar->brand = "Toyota";
$myCar->color = "red";
$myCar->drive(); // Выведет: The red Toyota is driving.
2. Свойства и методы
-
Свойства (переменные) содержат данные объекта.
-
Методы (функции) описывают поведение объекта.
phpКопироватьРедактироватьclass User {
public string $name;
public function sayHello() {
echo "Hello, my name is $this->name.";
}
}
3. Конструктор (__construct
)
Позволяет задать значения при создании объекта:
phpКопироватьРедактироватьclass Product {
public string $title;
public float $price;
public function __construct(string $title, float $price) {
$this->title = $title;
$this->price = $price;
}
public function display() {
echo "Product: $this->title, Price: $this->price";
}
}
$p = new Product("Notebook", 199.99);
$p->display(); // Product: Notebook, Price: 199.99
4. Модификаторы доступа: public
, protected
, private
Они определяют, кто может обращаться к свойствам и методам:
Модификатор | Доступизвне | Доступвнутрикласса | Доступизнаследников |
---|---|---|---|
public |
✅ | ✅ | ✅ |
protected |
❌ | ✅ | ✅ |
private |
❌ | ✅ | ❌ |
phpКопироватьРедактироватьclass Account {
private float $balance = 0;
public function deposit(float $amount) {
if ($amount > 0) {
$this->balance += $amount;
}
}
public function getBalance(): float {
return $this->balance;
}
}
$a = new Account();
$a->deposit(100);
// echo $a->balance; // Ошибка, private!
echo $a->getBalance(); // 100
5. $this
Ключевое слово $this
используется внутри класса для доступа к текущему объекту.
phpКопироватьРедактироватьpublic function showInfo() {
echo $this->name;
}
🏗 Построим свой первый ООП-проект
Создадим простую систему пользователей:
phpКопироватьРедактироватьclass User {
private string $name;
private int $age;
public function __construct(string $name, int $age) {
$this->name = $name;
$this->age = $age;
}
public function introduce(): void {
echo "Hi, I'm $this->name and I'm $this->age years old.";
}
public function celebrateBirthday(): void {
$this->age++;
echo "Happy Birthday, $this->name! You are now $this->age.";
}
}
$u = new User("Alice", 25);
$u->introduce(); // Hi, I'm Alice and I'm 25 years old.
$u->celebrateBirthday(); // Happy Birthday, Alice! You are now 26.
🎯 Зачем использовать ООП в реальных проектах?
ООП позволяет:
-
Упрощать и структурировать большие проекты
-
Легко внедрять шаблоны проектирования
-
Реализовать наследование, инкапсуляцию, полиморфизм
-
Повторно использовать код: один раз написав класс, можно его использовать в разных местах
🧩 Практика: создаём класс GuestbookEntry
phpКопироватьРедактироватьclass GuestbookEntry {
private string $author;
private string $message;
private string $date;
public function __construct(string $author, string $message) {
$this->author = $author;
$this->message = $message;
$this->date = date('Y-m-d H:i:s');
}
public function display(): void {
echo "<p><strong>" . htmlspecialchars($this->author) . "</strong>: ";
echo htmlspecialchars($this->message) . "<br><small>$this->date</small></p>";
}
}
$entry = new GuestbookEntry("Max", "PHP is awesome!");
$entry->display();
✅ Что ты усвоил
-
Что такое класс, объект, свойства и методы
-
Как работает
__construct
-
Модификаторы доступа:
public
,private
,protected
-
Как использовать
$this
-
Зачем ООП нужен в реальных проектах
⏭ Что дальше?
В следующей главе — наследование и расширяемость классов, а также автозагрузка классов (autoloading) и PSR-4.