用途:整理 Laravel 通知(Notification)的常见实现模式与最佳实践,帮助在应用中规范地发送多渠道通知。
主要能力:通知类通过 via() 指定渠道,如 mail、database、broadcast、slack;邮件通知可用 MailMessage 构建器或 Markdown 模板,支持附件与 attachData;数据库通知需执行 php artisan notifications:table 与 php artisan migrate,模型使用 Notifiable trait,toArray() 返回可序列化数据;广播通知使用 BroadcastMessage 并可通过 Echo 监听;Slack 通知支持 Block Kit 区块。
队列与投递:通知类实现 ShouldQueue 并 use Queueable,可用 viaQueues() 按渠道配置队列名,afterCommit 确保事务提交后发送,delay() 支持按渠道延迟,tries 与 backoff 配置重试,failed() 处理失败。shouldSend() 可按渠道做条件发送。
按需与批量:Notification::route('mail', 'admin@example.com')->notify(...) 可向无用户模型的地址发送;批量应使用 Notification::send($users, ...) 而非循环逐个发送。
测试:使用 Notification::fake() 配合 assertSentTo、assertNotSentTo、assertSentToTimes、assertNothingSent 断言,也可直接调用 toMail() 检查主题与渲染内容。
限制:资料未提供具体版本要求、性能数据或第三方短信服务商细节;自定义渠道需自行实现 send() 与 routeNotificationFor 方法。