@Eka555

Что означает return $this?

Привет всем.
Есть такая функция:
public function subject($subject)
    {
        $this->mailer->Subject = $subject;
        return $this;
    }

Это часть класса для отправки емайл.
Вызывается так :
$mailer = new Mail;
$mailer->to('eka1895@mail.ru')->subject('Тема сообщения')->body('Текст сообщения')->send();


Вопрос такой что означает "return $this"? И правильно ли так делать вообще?
Класс я сам написал просто удобно так отправлять сообщения. Все прекрасно работает, Только хочу понять правильно ли делать так - "return $this;"
  • Вопрос задан
  • 2186 просмотров
Решения вопроса 3
DevMan
@DevMan
если дружите с английским https://en.wikipedia.org/wiki/Method_chaining
на русском https://ru.wikipedia.org/wiki/Fluent_interface
еще на русском forwebdev.ru/javascript/chaining хоть и js, но суть понятна.
Ответ написан
index0h
@index0h
PHP, Golang. https://github.com/index0h
Вернуть инстанс текущего класса, удобно для чейнинга:
$this->a()->b();
Ответ написан
trevoga_su
@trevoga_su
Что бы понять что такое "чейнинг" и зачем это нужно, надо ознакомиться с ООП.
Метод, возвращающий экземпляр объекта, в контексте которого был вызван метод, позволяет строить цепочки вызовов как у тебя в вопросе. Это сделано что бы избежать написания подобных портянок:

$mailer = new Mail;
$mailer->to('eka1895@mail.ru');
$mailer->subject('Тема сообщения');
$mailer->body('Текст сообщения');
$mailer->send();

Насчет вопроса, правильно ли это - да, в этом нет ничего плохого. Но return this можно писать, если метод не возвращает никакого явного значения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы