Свойства и методы класса в PHP 8

Когда вы пишете класс в 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 добавляет удобный способ защитить значение от изменений.

Лого

Spartacus_85 [Admin]

Администратор сайта — это специалист, который отвечает за техническую поддержку и бесперебойную работу веб-ресурса.



0 Комментарий(я)

Зарегистрируйтесь чтобы оставить комментарий