Метод
Оригинальное название: 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(). - Метод на сотни строк, который делает всё сразу, — признак, что его пора разбить на несколько с понятными названиями.

