master

laravel/framework

Last updated at: 29/12/2023 09:24

AnonymousNotifiable.php

TLDR

This file defines the AnonymousNotifiable class, which is used for sending notifications in Laravel. It contains methods for adding routing information, sending notifications, retrieving routing information, and getting the primary key of the notifiable object.

Methods

route

This method adds routing information to the target. It takes in two parameters: $channel (string) and $route (mixed). The method throws an InvalidArgumentException if the channel is 'database' since the database channel does not support on-demand notifications.

notify

This method sends the given notification. It takes in one parameter: $notification (mixed).

notifyNow

This method sends the given notification immediately. It takes in one parameter: $notification (mixed).

routeNotificationFor

This method retrieves the notification routing information for the given driver. It takes in one parameter: $driver (string). If the routing information for the specified driver is not found, it returns null.

getKey

This method gets the value of the notifiable's primary key. It does not take any parameters and it returns the primary key value.

<?php

namespace Illuminate\Notifications;

use Illuminate\Contracts\Notifications\Dispatcher;
use InvalidArgumentException;

class AnonymousNotifiable
{
    /**
     * All of the notification routing information.
     *
     * @var array
     */
    public $routes = [];

    /**
     * Add routing information to the target.
     *
     * @param  string  $channel
     * @param  mixed  $route
     * @return $this
     *
     * @throws \InvalidArgumentException
     */
    public function route($channel, $route)
    {
        if ($channel === 'database') {
            throw new InvalidArgumentException('The database channel does not support on-demand notifications.');
        }

        $this->routes[$channel] = $route;

        return $this;
    }

    /**
     * Send the given notification.
     *
     * @param  mixed  $notification
     * @return void
     */
    public function notify($notification)
    {
        app(Dispatcher::class)->send($this, $notification);
    }

    /**
     * Send the given notification immediately.
     *
     * @param  mixed  $notification
     * @return void
     */
    public function notifyNow($notification)
    {
        app(Dispatcher::class)->sendNow($this, $notification);
    }

    /**
     * Get the notification routing information for the given driver.
     *
     * @param  string  $driver
     * @return mixed
     */
    public function routeNotificationFor($driver)
    {
        return $this->routes[$driver] ?? null;
    }

    /**
     * Get the value of the notifiable's primary key.
     *
     * @return mixed
     */
    public function getKey()
    {
        //
    }
}