PendingBroadcast.php
TLDR
This file contains the PendingBroadcast
class, which is responsible for broadcasting events. It allows you to specify a specific broadcaster and the targets for the broadcast.
Methods
via($connection = null)
This method specifies the broadcaster to use for the broadcast. It allows you to specify a connection that will be used for the broadcast. The default value is null
, which means the default connection will be used. The method checks if the event being broadcast has a broadcastVia
method, and if so, it calls that method.
toOthers()
This method specifies that the event should be broadcasted to everyone except the current user. It checks if the event being broadcast has a dontBroadcastToCurrentUser
method, and if so, it calls that method.
__destruct()
This method is a destructor that is automatically called when the object is destroyed. It dispatches the event using the event dispatcher.
<?php
namespace Illuminate\Broadcasting;
use Illuminate\Contracts\Events\Dispatcher;
class PendingBroadcast
{
/**
* The event dispatcher implementation.
*
* @var \Illuminate\Contracts\Events\Dispatcher
*/
protected $events;
/**
* The event instance.
*
* @var mixed
*/
protected $event;
/**
* Create a new pending broadcast instance.
*
* @param \Illuminate\Contracts\Events\Dispatcher $events
* @param mixed $event
* @return void
*/
public function __construct(Dispatcher $events, $event)
{
$this->event = $event;
$this->events = $events;
}
/**
* Broadcast the event using a specific broadcaster.
*
* @param string|null $connection
* @return $this
*/
public function via($connection = null)
{
if (method_exists($this->event, 'broadcastVia')) {
$this->event->broadcastVia($connection);
}
return $this;
}
/**
* Broadcast the event to everyone except the current user.
*
* @return $this
*/
public function toOthers()
{
if (method_exists($this->event, 'dontBroadcastToCurrentUser')) {
$this->event->dontBroadcastToCurrentUser();
}
return $this;
}
/**
* Handle the object's destruction.
*
* @return void
*/
public function __destruct()
{
$this->events->dispatch($this->event);
}
}