Метод

Оригинальное название: method

Коротко

Функция, объявленная внутри класса: она описывает поведение объектов этого класса и имеет доступ к их данным через ссылку на текущий объект — this или self.

Что такое «Метод»

Объект в программе — это данные плюс действия над ними. Данные лежат в свойствах, действия оформлены методами. Корзина интернет-магазина хранит список товаров, а методы позволяют добавить товар, удалить его и посчитать итог. Снаружи код не трогает список напрямую, а вызывает методы — так класс сам следит, чтобы данные оставались в порядке.

Слово «метод» встречается и в другом смысле — у HTTP-запросов. GET и POST не имеют отношения к классам, о них рассказано на странице «Методы HTTP».

Метод и обычная функция

Технически метод — та же функция, но с одним отличием: при вызове он получает объект, на котором его вызвали. В PHP и JavaScript это $this и this, в Python — явный первый параметр self. Поэтому два объекта одного класса вызывают один и тот же метод, а работают каждый со своими данными. Обычная функция таких данных не имеет и получает всё через аргументы.

Пример: класс корзины

class Cart {
    private array $items = [];
    public function add(int $id, int $qty = 1): static {
        $this->items[$id] = ($this->items[$id] ?? 0) + $qty;
        return $this;
    }
    public function count(): int {
        return array_sum($this->items);
    }
}
echo (new Cart())->add(10)->add(12, 2)->count(); // 3

Свойство $items закрыто модификатором private, и изменить его можно только методом add(). Метод возвращает сам объект, поэтому вызовы выстраиваются в цепочку. Методы, которые только читают или только записывают одно свойство, называют геттерами и сеттерами.

Статические методы и частые ошибки

Статический метод принадлежит классу, а не объекту, и вызывается через :: без создания экземпляра. В 1С-Битриксе так подключают модули: \Bitrix\Main\Loader::includeModule('iblock'). В WordPress чаще встречаются обычные методы глобальных объектов, например $wpdb->get_results().

  • Внутри статического метода нет $this: обращение к нему вызовет ошибку.
  • В JavaScript метод, переданный как колбэк (button.onclick = cart.add), теряет свой this. Выручают стрелочная функция или bind().
  • Метод на сотни строк, который делает всё сразу, — признак, что его пора разбить на несколько с понятными названиями.

Обновлено:

Все термины раздела «Backend»

Что будем искать? Например,Продвижение