Laravel 8 定义频道类
如果你的应用程序使用了很多不同的频道, 那么 routes/channels.php
文件将会变得很臃肿。 所以,你可以使用频道类,而不是使用闭包来授权频道。要生成频道类,使用 make:channel
Artisan 命令。 此命令将在 App/Broadcasting
目录,生成一个新的频道类。
php artisan make:channel OrderChannel
接下来,在 routes/channels.php
文件中注册你的频道:
use App\Broadcasting\OrderChannel;
Broadcast::channel('order.{order}', OrderChannel::class);
最后,你可以把频道的授权逻辑,放在频道类的 join
方法中。join
方法将保留在频道授权闭包中的逻辑。 你还可以利用频道模型绑定:
<?php
namespace App\Broadcasting;
use App\Models\Order;
use App\Models\User;
class OrderChannel
{
/**
* 新建一个新的频道实例
*
* @return void
*/
public function __construct()
{
//
}
/**
* 验证用户对频道的访问权限。
*
* @param \App\Models\User $user
* @param \App\Models\Order $order
* @return array|bool
*/
public function join(User $user, Order $order)
{
return $user->id === $order->user_id;
}
}
提示:和很多 Laravel 中其他类一样,频道类会被 服务容器 自动解析。 所以,你可以在构造函数中键入频道所需的任何依赖。