cb7
cb7

Reputation: 523

Source of method in Laravel

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

Answers (1)

Salim Djerbouh
Salim Djerbouh

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

Related Questions