@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;"
  • Вопрос задан
  • 2132 просмотра
Решения вопроса 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 можно писать, если метод не возвращает никакого явного значения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы