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. Для соседних задач пригодятся эти разборы:
- Как создать сайт на PHP: первый рабочий пример с локальным сервером
- Composer в PHP: установка пакетов без ручного копирования
- Joomla: как убрать index.php из адреса сайта
- Laravel: первый route и controller для новичка