use Acme\Orders\Broadcasting\OrderChannel;use Illuminate\Support\Facades\Broadcast;public function boot(): void{ Broadcast::channel('acme.orders.{order}', OrderChannel::class);}
<?phpnamespace Acme\Orders\Broadcasting;use Acme\Orders\Models\Order;use Illuminate\Contracts\Auth\Authenticatable;class OrderChannel{ public function join(Authenticatable $user, Order $order): bool { return $user->getAuthIdentifier() === $order->owner_id; }}
join() の第1引数には、認可時のユーザーが渡されます。以降の引数は、チャンネル名の {...} の値です。{order} のパラメーター名と Order $order の型が一致し、型が UrlRoutable のサブクラスであれば、ルートモデルのバインディングが働きます。
use Illuminate\Support\Facades\Broadcast;public function test_package_registers_order_channel(): void{ $channels = Broadcast::driver()->getChannels(); $this->assertTrue($channels->has('acme.orders.{order}'));}