Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel广播:通知与事件_Php_Laravel - Fatal编程技术网

Php Laravel广播:通知与事件

Php Laravel广播:通知与事件,php,laravel,Php,Laravel,我阅读了有关事件和通知的laravel文档,似乎我们可以触发一个事件,并从该事件(使用ShouldBroadcast界面)将其广播给laravel echo,我理解,另一方面,我们可以使用通知viaBroadcast来做同样的事情,那么有什么不同呢?经过深思熟虑,我发现它们是为不同的事物而设计的,以下是我的理解: 通知: 以facebook为例,每次登录时,你都会看到一堆关于你外出时发生的事情的通知,如果你在场,你也会看到实时通知 与此同时,你会收到关于你想要的通知的电子邮件。。 这正是Lara

我阅读了有关
事件
通知
的laravel文档,似乎我们可以触发一个事件,并从该事件(使用
ShouldBroadcast
界面)将其广播给laravel echo,我理解,另一方面,我们可以使用通知
viaBroadcast
来做同样的事情,那么有什么不同呢?

经过深思熟虑,我发现它们是为不同的事物而设计的,以下是我的理解:

通知:

以facebook为例,每次登录时,你都会看到一堆关于你外出时发生的事情的通知,如果你在场,你也会看到实时通知

与此同时,你会收到关于你想要的通知的电子邮件。。 这正是Laravel Notifications所做的。 您可以使用
notify
方法在您的有说服力的模型上,例如
App\User
关于
orderproved
之类的内容,它将执行您计划执行的任何操作,例如向该用户发送短信。而且,您还可以在数据库中保存该通知的一个瞬间,以便当用户返回时,他或她可以看到您已经批准了他们的订单

事件:

当一些事情发生时,比如当一个新用户被创建时,你想做不同的事情,比如发送验证电子邮件,发送验证短信和。。这就是为什么要创建一个事件,以便可以使用侦听器处理该事件的不同逻辑。 当涉及到广播时,您可以在事件上使用
ShouldBroadcast
界面,从那里您可以将数据与您的管理面板同步,从而注册新用户。当管理员正在查看用户列表时,这将非常有用,无需重新加载页面,您可以使用用户
Laravel Echo
在管理面板上接收该事件,并将新注册用户附加到列表中

结论:

这实际上取决于您需要什么,如果您只想更新界面中的某些内容,那么事件可能就是您需要的。但是如果你需要做更多的事情,你可以使用通知

最终,当您需要在某些事情发生时执行操作时,使用事件,而通知则是对刚刚发生的事情的报告


希望它能帮助其他人。

我所提供的答案缺少的是,在大多数情况下,它们都被使用,而不是1或其他,这似乎是所提供答案/问题的基调

事件是应用程序中的重要事件。假设您的应用程序是一个Webshop

在你的网店里,一个重要的活动就是购买产品。购买产品时,您需要执行许多不同的步骤。把这些都放在一个控制器中,可能放在几个不同的地方,可能会变得非常混乱和不清楚

因此,一个好的方法是使用名为ProductPurchased事件。此事件可以有侦听器,在本例中,这些侦听器是用户购买产品时需要执行的所有步骤

e、 g: 购买的产品(活动)

  • BillClient(eventlistener)
  • GenerateInvoice(事件侦听器)
  • notifyClient(eventlistener)
假设我们希望在客户购买产品时通过短信和电子邮件通知他们

因此,在notifyClient事件侦听器上,我们可以创建一个通知。此通知负责向客户端发送消息。这可以是短信息/松弛消息/电子邮件/

正如您提到的,事件和通知都可以放在队列中,也可以广播

当您想将内容发送到不同的频道时,您可以选择通知。邮件/SMS/Slack。。 如果你只需要广播,你可以使用ShouldBroadcast。就像只想发送电子邮件一样,使用mail::而不需要通知


通知是将同一“消息”分组到不同目的地的好方法。

实际上,您可以使用事件侦听器创建自己的通知机制,但Laravel提供了现成的解决方案来跟踪您的活动,特别是如果您使用数据库通知,因为您不需要知道Laravel如何过滤通知数据,拉威尔为你提供一切。即使是slack、nexmo、mail、broadcast,您也可以手动从事件中触发,但通知会将所有这些都包装起来,以便更容易实现。出色的深入回答,本应得到更多的支持!我认为原始问题所指的是,与其执行
事件(购买的新产品)
和3个监听器触发,为什么不在ProductPurchased中使用
broadcastOn
方法,而不使用notifyClient监听器。当然,问题是他理解广播。这是websocket的东西,主要用于向用户显示应用程序中的实时信息。而通知则用于发送给用户。侦听器只是应该在重要操作之后触发的类。它不是事件监听器,也不是通知或广播,它们可以为某个特定的动作而完成。它们有不同的用途。你知道,我今天用我的gmail注册了一个stackoverflow帐户,只是为了更新这个答案。。。我来这里是想确定为什么要使用or,但我无法理解其中的差别。。。这个答案简洁而恰当。。。你利用一个事件来陈述“发生了一些重要的事情”,然后你利用监听器来触发那些发生的事情。。。我个人认为,既然通知已经启用,广播就不应该再成为事件系统的一部分,因为广播对我来说似乎应该是一个听众关心的问题!非常感谢@Christophvh@RomanLopez谢谢你的好话!使用web套接字时,广播仍然很有用。例如,使用laravel Echo构建聊天应用程序时,广播是解决方案。