资讯专栏INFORMATION COLUMN

使用Laravel事件保持代码清洁

crossea / 2563人阅读

摘要:事件类负责序列化传入数据,并将其传递给侦听器,旨在在事件触发后处理逻辑的内容。当绑定准备就绪时,我们可以使用生成一对事件侦听器,或者我们可以使用命令多带带创建它们。我们的事件没有其他责任,只是将用户指定为公共财产,可能会传递给侦听器。

在许多情况下,当我们的应用程序变得更大,并且需要处理越来越多的任务时,我们的控制器,演示者或服务的大小可以快速增加,并且很容易变得难以处理,无法测试和缓慢。

单一职责

重新组织我们的逻辑,并将不同类型的任务放到专门的类中,可能会非常有用,并且这是推荐的“最佳”实践。

为什么?处理更多但更小的碎片比处理巨大巨石中的所有物件要容易得多。最重要的是,你的应用程序变得更加可测试,你不会破坏SRP,并且最终你可以轻松获得更干净更漂亮的代码。

开始使用事件

其中一项有用的技巧是Laravel的 Event 服务。 首先,在各种情况下,通过将任务移至事件类,可彻底清理控制器。 使用事件的另一个原因是队列系统,它允许你的应用程序异步完成作业,这可以极大地加速你的应用程序。

事件系统有两个重要部分。 事件本身和侦听器(Listener)可以绑定到特定的事件。 事件类负责序列化传入数据,并将其传递给侦听器,旨在在事件触发后处理逻辑的内容。

实际中使用事件 (Event)

触发事件从未如此简单,我们所要做的就是调用 event() helper,并将事件的类作为参数。如: event(UserRegistered::class)

通过一个常见的例子,让我们看看它在现实生活中的作用。在我们的应用程序中,我们希望向我们的新用户发送欢迎电子邮件。

首先,我们需要在 EventServiceProvider 中绑定事件和侦听器。如果我们想要处理特定事件的不同逻辑,我们可以将更多监听器附加到事件上。

// app/Providers/EventServiceProvider.php

 [
            "AppListenersSendWelcomeEmail",
        ],
    ];
}

当绑定准备就绪时,我们可以使用 php artisan event:generate 生成一对 事件-侦听器,或者我们可以使用 artisan make 命令多带带创建它们。

我们的事件没有其他责任,只是将用户指定为公共财产,可能会传递给侦听器。

// app/Events/UserRegistered.php

user = $user;
    }
}

我们的侦听器Listener是重要的一部分。 它实现了 ShouldQueue 接口,这意味着这个事件将被推送到队列堆栈。 在 handle 方法中,我们正在实现将电子邮件发送给给定用户的逻辑。

// app/Listeners/SendWelcomeEmail.php

user)->send(new WelcomeEmail($event->user));
    }
}

重组我们的逻辑可能非常有用,尤其是当你需要处理大量任务时。事件和侦听器可能对你有很大的帮助。你可以在这里找到官方的Laravel事件文档。

更多PHP知识,请前往 PHPCasts

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28680.html

相关文章

  • 为什么Laravel会成为最成功的PHP框架

    摘要:年,将作为一种包含全新现代方法的框架介绍给大家。本文我们将讨论为什么会成为最成功的框架。身份验证安全是至关重要的。单元测试单元测试的开发是一个耗费大量时间的任务,但是它却是保证我们的应用程序保持正常工作的关键。中可使用执行单元测试。 2011年,Taylor Otwell将Laravel作为一种包含全新现代方法的框架介绍给大家。Laravel最初的设计是为了面向MVC架构的,它可以满足...

    Terry_Tai 评论0 收藏0
  • 如何设计大型网站的前端 JavaScript 框架

    摘要:前端单元测试,推荐淘宝开源的工具,简单易用,支持众多测试框架,也支持调试。这些也是设计前端框架时需要权衡的重要方面。最后,其实大型网站不一定要设计自己的前端框架,完全可以选用现有的框架。 有人在知乎上提问如何设计大型网站的前端 JavaScript 框架,有不少回答,其中得赞较多的两个回答如下: 相对大型的项目在前端 JS 方面有几个需要达成的目标: 1. 代码逻辑分层 ...

    Yuanf 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<