Статья

📘 Глава 18. Основы ООП в PHP: классы, свойства, методы, конструкторы


🧠 Что такое ООП?

Объектно-ориентированное программирование (ООП) — это способ организации кода, при котором данные и действия над ними объединяются в объекты. Этот подход делает код:

  • структурированным и модульным,

  • легко читаемым и расширяемым,

  • удобным для командной разработки.


🔍 Почему ООП важно?

На начальных этапах можно обойтись простыми функциями, но по мере роста проекта появляется необходимость:

  • разделить логику на модули;

  • изолировать бизнес-логику от представления;

  • повторно использовать и расширять код;

  • тестировать и масштабировать проект.

ООП как раз решает эти задачи.


🧱 Основные понятия ООП в 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.

PHP
Для ответа вы можете авторизоваться