Reputation: 523
In the source code of Illuminate\Mail\PendingMail
(API reference), the queue
method references $this->mailer->queue
. However, $this->mailer
is an instance of Illuminate\Contracts\Mail\Mailer
(API reference) which has no queue
method. So can anyone please explain how this piece of code works if it seemingly calls a method that doesn't exist?
Upvotes: 0
Views: 84
Reputation: 11044
Contracts is just what Laravel calls Interfaces, it's an interface being implemented by Illuminate\Mail\Mailer which does have that method queue
defined
/**
* Queue a new e-mail message for sending.
*
* @param \Illuminate\Contracts\Mail\Mailable $view
* @param string|null $queue
* @return mixed
*
* @throws \InvalidArgumentException
*/
public function queue($view, $queue = null)
{
if (! $view instanceof MailableContract) {
throw new InvalidArgumentException('Only mailables may be queued.');
}
if (is_string($queue)) {
$view->onQueue($queue);
}
return $view->queue($this->queue);
}
Hope this helps
Upvotes: 2