PHP

Классы в PHP: как объявить класс и создать объект

Короткий ответ: класс в PHP — это шаблон для объектов. В классе описывают свойства и методы, а потом создают конкретный объект через new. Если совсем просто, класс описывает “какие данные есть” и “что с ними можно сделать”

Начинающему не нужно сразу уходить в сложную архитектуру. Для старта достаточно понять class, свойства, методы, $this и конструктор

Минимальный класс

<?php

class Product
{
    public string $title;
    public int $price;

    public function getInfo(): string
    {
        return $this->title . ': ' . $this->price . ' руб.';
    }
}

$product = new Product();
$product->title = 'Книга';
$product->price = 900;

echo $product->getInfo();

Результат

Книга: 900 руб.

Product — это класс. $product — объект, созданный по этому классу. title и price — свойства. getInfo() — метод

Что такое $this

$this означает “текущий объект”. Внутри метода через $this->title мы обращаемся к свойству именно того объекта, у которого вызвали метод

<?php

$book = new Product();
$book->title = 'Книга';
$book->price = 900;

$course = new Product();
$course->title = 'Курс PHP';
$course->price = 3000;

echo $book->getInfo();
echo PHP_EOL;
echo $course->getInfo();

Один класс, но два разных объекта с разными данными

Конструктор

Чтобы не присваивать свойства вручную после создания объекта, используют __construct

<?php

class Product
{
    public function __construct(
        public string $title,
        public int $price
    ) {}

    public function getInfo(): string
    {
        return $this->title . ': ' . $this->price . ' руб.';
    }
}

$product = new Product('Книга', 900);

echo $product->getInfo();

Конструктор вызывается автоматически при new Product(...)

Метод внутри класса

Метод похож на функцию, но принадлежит классу

<?php

class Cart
{
    public array $items = [];

    public function add(string $title): void
    {
        $this->items[] = $title;
    }

    public function countItems(): int
    {
        return count($this->items);
    }
}

$cart = new Cart();
$cart->add('Книга');
$cart->add('Курс PHP');

echo $cart->countItems();

Метод add() меняет состояние объекта, а countItems() возвращает количество товаров

Как объявить класс в классе PHP

Запрос “как объявить класс в классе PHP” часто означает две разные вещи. Иногда человек хочет просто создать класс. Иногда он действительно спрашивает про вложенный класс. В PHP классы обычно объявляют отдельно, а не внутри других классов. Если нужно связать сущности, один класс передают в другой через свойство или конструктор

<?php

class User
{
    public function __construct(public string $name) {}
}

class Order
{
    public function __construct(public User $user) {}
}

$user = new User('Динар');
$order = new Order($user);

echo $order->user->name;

Так код остается понятнее: User отдельно, Order отдельно, а связь между ними выражена через объект

Мини-практика

Создайте класс Lesson со свойствами title и minutes. Добавьте метод getDescription(), который возвращает строку вроде Урок: Переменные, 15 минут. Затем создайте два урока и выведите описание каждого

Так вы закрепите главную механику: класс описывает форму, объект хранит конкретные данные

Частые ошибки

Путают класс и объект Класс — шаблон. Объект — конкретная созданная сущность

Забывают new Методы объекта нельзя вызвать, пока объект не создан через new

Пишут $this вне класса $this работает внутри методов объекта

Делают классы ради классов Если задача решается простой функцией и массивом, класс не всегда нужен

Что почитать дальше по PHP

Если нужен общий маршрут по теме, откройте рубрику PHP. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x