Когда вы пишете класс в PHP, вы описываете некий объект из реального мира: пользователя, товар, заказ. У каждого такого объекта есть данные — и действия, которые он умеет выполнять. Именно для этого в классах существуют свойства и методы.
Что такое свойства?
Свойство — это переменная, объявленная внутри класса. Оно хранит данные конкретного объекта: имя пользователя, цену товара, статус заказа. Каждый объект класса имеет собственный набор значений свойств.
Свойства объявляются с модификатором доступа и, начиная с PHP 7.4, могут иметь тип. В PHP 8 появилось ключевое слово readonly, которое запрещает изменение свойства после его первой установки.
class Article
{
public string $title; // доступно отовсюду
protected int $views = 0; // только класс и наследники
private bool $published = false; // только внутри класса
public readonly string $slug; // PHP 8: задаётся один раз
}
Что такое методы?
Метод — это функция, объявленная внутри класса. Методы описывают поведение объекта: что он умеет делать. Через методы объект получает доступ к своим свойствам с помощью псевдопеременной $this, которая указывает на текущий экземпляр класса.
class Article
{
public function __construct(
public readonly string $title,
private string $content,
private bool $published = false
) {}
// Публичный метод — получить краткое превью
public function getPreview(int $length = 100): string
{
return mb_substr($this->content, 0, $length) . '...';
}
// Публичный метод — опубликовать статью
public function publish(): void
{
$this->published = true;
}
// Публичный метод — проверить статус
public function isPublished(): bool
{
return $this->published;
}
// Приватный метод — вспомогательный, не виден снаружи
private function formatContent(): string
{
return trim($this->content);
}
}
$this — это ссылка на текущий объект. Через неё метод обращается к свойствам и другим методам того же экземпляра класса.
Пример: класс в работе
Создадим объект и вызовем его методы:
$article = new Article(
title: 'Введение в ООП на PHP',
content: 'Объектно-ориентированное программирование — это подход...'
);
echo $article->title; // Введение в ООП на PHP
echo $article->getPreview(20); // Объектно-ориентирова...
var_dump($article->isPublished()); // bool(false)
$article->publish();
var_dump($article->isPublished()); // bool(true)
Зачем разделять свойства и методы?
Такое разделение — не просто соглашение. Оно отражает фундаментальный принцип: данные отдельно от логики. Свойства хранят состояние, методы работают с ним. Это делает код предсказуемым: зная, что значение свойства меняется только через метод publish(), вы уверены, что никто случайно не перезапишет флаг публикации напрямую.
Закрытые свойства (private) в связке с публичными методами-геттерами и сеттерами — это и есть инкапсуляция: ключевой принцип ООП, который защищает данные и делает API класса явным и контролируемым.
Свойства и методы — это два кита, на которых стоит любой класс в PHP. Свойства хранят данные объекта, методы определяют его поведение. Модификаторы доступа (public, protected, private) позволяют контролировать, кто и как может взаимодействовать с данными, а ключевое слово readonly из PHP 8 добавляет удобный способ защитить значение от изменений.
0 Комментарий(я)
Зарегистрируйтесь чтобы оставить комментарий